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).