Zeiger problem
-
Hallo
ich lerne gerade c und bei den zeigern habe ich ein problem:int *zeiger; //Zeiger deklarieren int var = 10; int *ptr; ptr = &var; int var2; var2 = *ptr; printf("var2 = %d\n",var2); printf("var = %d\n",var); printf("*ptr = %d\n",*ptr); *ptr = 100; //Hiermit wird der Wert der Variable dereferenziert. printf("*ptr = %d\n",*ptr); *ptr+=90; printf("190: %d\n",*ptr); *ptr++; printf("191: %d\n",*ptr); // 2 ? *ptr--; printf("190: %d\n",*ptr);
ich habe das jetzt vollständig rein kopiert.
also bei der zeile wo // 2 ? steht gibt der zeiger 2 aus und nicht 191.
Warum?danke schön im voraus
-
Hallo,
der Inkrement-Operator hat bei der Auswertung des Ausdrucks Vorrang vor der Dereferenzierung. Du mußt also Klammern
(*ptr)++; (*ptr)--;
-
leider wurde im buch so nicht beschrieben
und wieso kommt dann 2 raus?
-
maximo schrieb:
leider wurde im buch so nicht beschrieben
und wieso kommt dann 2 raus?Weil in *(ptr+1) 2 steht
-
Code mit Ausgaben als Kommentar:
int *zeiger; int var = 10; int *ptr; ptr = &var; int var2; var2 = *ptr; printf("var2 = %d\n",var2); // 10 printf("var = %d\n",var); // 10 printf("*ptr = %d\n",*ptr); // 10 *ptr = 100; printf("*ptr = %d\n",*ptr); // 100 *ptr+=90; printf("190: %d\n",*ptr); // 190 (*ptr)++; printf("191: %d\n",*ptr); // 191 (*ptr)--; printf("190: %d\n",*ptr); // 190
-
alles klar
vielen dank