Bislang griffen wir stets direkt auf Variablen zu, d.h., es war nicht von Interesse, wo die Daten im Speicher abgelegt sind. Ein neuer Variablentyp, der Pointer (Zeiger), speichert Adressen unter Berücksichtigung des dort abgelegten Datentyps.
Sei der Zeiger auf ein Objekt vom Typ int mit p bezeichnet, so ist
int *p;
dessen Deklaration, oder allgemein wird durch
[speicherklasse] <typ> *<bezeichner>;
ein Zeiger auf den Datentyp <typ> definiert.
So können die folgenden Zeigervariablen definiert werden
// Pointer declaration { struct Student { ... }; char *cp; // pointer on char int x, *px; // int-variable, pointer on int float *fp[20]; // array of 20 pointers on float float *(fap[10]); // pointer on array of 10 float Student *ps; // pointer on structure Student char **ppc; // pointer on pointer of char }