Pointer if-Abfrage



  • Hallo,

    ich hab einen Pointer deklariert der auf eine xyz Stelle schaut. In einer if-Abfrage möchte ich überprüfen, ob wenn ich den pointer um 1 verschiebe, ein xyz Wert drinnen steht - wenn nicht, soll der Pointer aber nicht um 1 verschoben bleiben...

    ptr = (int *) wert1; 
    
    if(*ptr++) == wert)
       //mach irgendwas
    
    else 
    //ptr++ soll nicht erfolgen...
    

    Muss ich dann in der else-Schleife den ptr manuell wieder *ptr-- nehmen (das würde gehen) - oder gibt es eine bessere Abfrage in der if-Anweisung so dass ich den pointer nicht zurückschieben muss...

    Ich suche einfach eine kostengünstige Methode - ohne zweiten Pointer und möglichst wenig code. :xmas1:

    derTim



  • Wenn du nur unter bestimmten Bedingungen weiterschieben willst, mußt du das ganze auseinandernehmen:

    if(*ptr == wert)
    {
      ++ptr;
      //mach irgendwas
    }
    


  • das problem ist, dass dieser "wert" z.b. ein define ist, und nur zutreffen kann, wenn ich den *ptr++ (um eines weiterschiebe) - aber wahrscheinlich muss ich ihn halt dann wieder zurückschieben, wenn die if-Abfrage nicht stimmt... um richtig weiterarbeiten zu können.

    derTim



  • derTim schrieb:

    das problem ist, dass dieser "wert" z.b. ein define ist, und nur zutreffen kann, wenn ich den *ptr++ (um eines weiterschiebe)

    Wie darf man denn das verstehen? "*ptr++" erhöht den Pointer und liefert dir den Wert, auf den er vorher gezeigt hat - das kannst du vergleich mit allem, was du willst. Was für Probleme du mit dem Makro haben könntest, mußt du mal erklären.

    PS: Wenn du den Wert überprüfen willst, auf den der Pointer nach der Erhöhung zeigen wird, müsstest du "*++ptr" oder *(ptr+1) verwenden (letzteres lässt den Pointer an seiner Position).


Anmelden zum Antworten