Der unäre Referenzoperator (Adressoperator)
&<variable>
bestimmt die Adresse der Variablen im Operanden.
Der unäre Dereferenzoperator (Zugriffsoperator)
*<pointer>
erlaubt den (indirekten) Zugriff auf die Daten auf welche der Pointer zeigt. Die Daten können wie eine Variable manipuliert werden.
// Pointer operators #include <iostream.h> main() { int i, j, *pint; i = 10; // i = 10 pint = &i; // pointer initialization j = *pint; // access on int *pint = 0; // i = 0 *pint += 2; // i += 2 }
In obigem Beispiel fungiert *pint als int-Variable und dementsprechend können auch alle dafür definierten Operationen mit ihr ausgeführt werden.
Achtung : In dem Programmfragment
{ double *px; *px = 3.1; // WRONG! }
wird zwar Speicherplatz für den Zeiger reserviert (8 Byte), jedoch ist der Wert von px noch undefiniert und daher wird der Wert 3.1 in einen dafür nicht vorgesehenen Speicherbereich geschrieben
$\Longrightarrow$ mysteriöse Programmabstürze und -fehler.
Es gibt eine spezielle Zeigerkonstante 0, welche auf die (hexadezimale) Speicheradresse 0x0 (= NULL) verweist und bzgl. welcher eine Zeigervariable getestet werden kann.