next up previous contents
Nächste Seite: Dynamischer Speicher mit malloc Aufwärts: Pointer Vorherige Seite: Deklaration und Zuweisung   Inhalt

Dereferenzierung

Um mittels eines Pointers auf das Objekt zugreifen zu können, auf das dieser ``zeigt``, muss man ihn ,,dereferenzieren``. Auch dafür gibt es in C einen Operator, nämlich den *, wenn er vor die Pointervariable geschrieben wird.

Ein NULL-Pointer darf nicht dereferenziert werden. Ist man nicht sicher, ob ein Pointer ein NULL-Pointer ist, muß man dies vorher teste, sonst entsteht ein Laufzeitfehler.


int i = 5;
int j = 6;
int *ip;
int *iq;

...
ip = &i; /* ip enthaelt die Adresse von i */

printf("%d\n",i); /* druckt beides den Inhalt von i (5) */
printf("%d\n",*ip);

*ip = 7; /* i wird ueberschrieben, da ip auf i zeigt */

printf("%d\n",i); /* druckt beides den Inhalt von i (jetzt 7) */
printf("%d\n",*ip);

iq = &j; /* iq enthaelt die Adresse von j */

...
ip = iq; /* ip enthaelt den Inhalt von iq, i.e. Adresse von j */

printf("%d\n",i); /* druckt den Inhalt von i (jetzt 7) */
printf("%d\n",*ip); /* druckt den Inhalt von j (noch 6) */

ip = &i; /* ip enthaelt wieder die Adresse von i */

*ip = *iq; /* Das Objekt, auf das ip zeigt (i) wird mit dem Objekt
              ueberschrieben , auf das iq zeigt (j) */

printf("%d\n",i); /* druckt den Inhalt von i (jetzt 6) */
printf("%d\n",j); /* druckt den Inhalt von j (immer noch 6) */



Thomas Neuhaus
2001-01-14