Mit C können Sie eine Situation erstellen, in der mehrere Zeiger auf genau dieselbe Stelle im Speicher verweisen. Sie können mehrere Zeiger deklarieren und dafür sorgen, dass sie alle auf dieselbe Variable zielen. Das ist nicht nur eine theoretische Eigenart. Es passiert ständig im echten Code.
Betrachten Sie diesen Ausschnitt:
„c
int i;
int p, q, *r;
p = &i;
q = &i;
r = p;
„
Hier erfasst „p“ die Adresse von „i“. „q“ macht dasselbe. Dann nimmt „r“ den Wert von „p“ an. Da „p“ die Adresse von „i“ enthält, zeigt „r“ nun auch auf „i“. Der Zuweisungsoperator kopiert die Adresse von der rechten Seite auf die linke Seite. Die Daten werden nicht kopiert. Es kopiert den Standort.
Nachdem diese Zeilen ausgeführt wurden, hat „i“ effektiv Aliase erhalten. Sie können jetzt über seinen ursprünglichen Namen oder über einen der Zeiger auf die Ganzzahl „i“ zugreifen.
Die Variable „i“ hat jetzt vier Namen: „i“, „p“, „ q“ und „*r“.
Es gibt keine feste Grenze dafür, wie viele Zeiger dieselbe Adresse enthalten können. Sie können sie so tief verketten, wie Sie möchten. Ändern Sie „p“ und „ r“ sieht die Änderung. Sie blicken alle auf dieselbe Erinnerungszelle.
Es können beliebig viele Zeiger auf die gleiche Adresse zeigen.
Dieses Verhalten ist für die Funktionsweise von Zeigern von grundlegender Bedeutung. Es ist kein Sonderfall. Es ist die Standardeinstellung. Wenn Sie dies verstehen, können Sie Verwirrung beim Debuggen vermeiden. Wenn Sie unerwartete Werte sehen, prüfen Sie, ob mehrere Zeiger dieselbe Position ändern. Es ist keine Zauberei. Es ist nur Erinnerung.


























