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