Exercise: Pointer-Tracing

Schritt 1:
int a = 10; int b = 20; int* p1 = &a; int* p2 = &b;
Variable Adresse Wert Zeigt auf (für Pointer)
a 0x1000
b 0x1004
p1 0x2000
p2 0x2008
💡 Hinweis: p1 wird mit &a initialisiert, speichert also die Adresse von a.
Schritt 2:
p1 = p2;
Variable Adresse Wert Zeigt auf
a 0x1000
b 0x1004
p1 0x2000
p2 0x2008
💡 Hinweis: p1 = p2 kopiert den Wert von p2 nach p1. Beide zeigen jetzt auf b! Die Variablen a und b ändern sich nicht.
Schritt 3:
*p1 = 30;
Variable Adresse Wert Zeigt auf
a 0x1000
b 0x1004
p1 0x2000
p2 0x2008
💡 Hinweis: *p1 = 30 ändert den Wert AM ZIEL von p1. p1 zeigt auf b, also wird b auf 30 geändert!
Schritt 4:
int** pp = &p2; **pp = 40;
Variable Adresse Wert Zeigt auf
a 0x1000
b 0x1004
p1 0x2000
p2 0x2008
pp 0x3000
💡 Hinweis: pp zeigt auf p2. **pp bedeutet: folge pp zu p2, dann folge p2 zu b, also wird b geändert!