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) */