next up previous contents index
Nächste Seite: 6.3 Zeiger und Felder Aufwärts: 6. Zeiger Vorherige Seite: 6.1 Vereinbarung von Zeigern   Inhalt   Index


6.2 Zeigeroperatoren

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 
}
(siehe Ex620.cc)

In obigem Beispiel fungiert *pint als int-Variable und dementsprechend können auch alle dafür definierten Operationen mit ihr ausgeführt werden.

\begin{center}\vbox{\input{kap621.pstex_t}
}\end{center}

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 ( NULL in C), welche auf die (hexadezimale) Speicheradresse 0x0 (= nil) verweist und bzgl. welcher eine Zeigervariable getestet werden kann.


Gundolf Haase 2004-01-15