Warum zeigt der Zeiger auf eine um 4 Byte verschobene Adresse?
-
Siehe Code:
int x = 1; int *ptr; ptr = &x; printf("ptr = %p, ptr = %p\n", &ptr, ptr); // Die Adressn unterscheiden sich.
Wenn man vor ptr ein & setzt?
-
&ptr zeigt auf den Speicher von ptr
(ptr zeigt auf den Speicher von x)Edit:
Versuch mal:int main() { int x; char s[100]; int *ptr; }
-
Die Speicherplätze von *ptr und x liegen hintereinander im Speicher.
Und da sizeof(x) = 4 unterscheiden sich die Adressen um 4.
-
printf("ptr = %p, ptr = %p\n", &x, ptr); // Die Adressn unterscheiden sich nicht mehr...