Mit C können Sie einen Stau aus Zeigern erstellen, die alle auf denselben Speicherort zielen. Das ist kein Fehler. Es ist eine Funktion. Sie können beliebig viele Zeiger deklarieren und alle auf genau dieselbe Variable verweisen.

Betrachten Sie dieses Szenario. Sie haben eine Ganzzahl „i“. Sie haben auch drei Zeiger: „p“, „q“ und „r“. Sie setzen „p“ so, dass es auf „i“ zeigt. Dann setzen Sie „q“ so, dass es auf „i“ zeigt. Schließlich stellen Sie „r“ so ein, dass es auf die Stelle zeigt, auf die „p“ zeigt.

„c
int i;
int p, q, *r;
p = &i;
q = &i;
r = p;

In diesem Block zeigt „r“ auf dasselbe, was „p“ tut. Welches ist „i“. Der Zuweisungsoperator kopiert die Adresse von der rechten Seite auf die linke Seite. Der Wert wird nicht kopiert. Es kopiert den Standort.

Nach der Ausführung hat „i“ vier Namen. „ich“ selbst. *p. *q. Und „*r“.

Es gibt keine Begrenzung, wie viele Zeiger eine einzelne Adresse enthalten können. Sie können sie verketten. Sie können sie kopieren. Sie können sie alle gleichzeitig zeigen.

Warum ist das wichtig? Es ist wichtig, weil es Ihre Einstellung zum Gedächtnis verändert. Ein Zeiger ist lediglich eine Bezeichnung für einen Ort. Wenn mehrere Beschriftungen auf dieselbe Stelle verweisen, sehen alle dieselben Daten. Ändern Sie die Daten durch „p“. „ q“ sieht es auch.

Diese Flexibilität ist kraftvoll. Es ist auch gefährlich. Ein Tippfehler in einer Zeigerzuweisung und Sie überschreiben Daten, die Sie nicht berühren wollten. Aber verstehen Sie zunächst einmal, dass Zeiger flexibel sind. Sie besitzen kein Gedächtnis. Sie weisen einfach darauf hin. Und mehrere Zeiger können ohne Streit auf denselben Ort verweisen.