====== Zeigeroperatoren ======
Der unäre Referenzoperator (Adressoperator)
&
bestimmt die Adresse der Variablen im Operanden.
Der unäre Dereferenzoperator (Zugriffsoperator)
*
erlaubt den (indirekten) Zugriff auf die Daten auf welche der Pointer zeigt. Die Daten können wie eine Variable manipuliert werden.
// Pointer operators
#include
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
}
++++ gesamtes Programm|
// Pointer operators
#include
main()
{
int i, j, *pint;
i = 10;
pint = &i; // pointer initialization
j = *pint; // access on int
cout << endl << " " << i << " " << j << " " << *pint << " " << pint << endl;
*pint = 0; // initialize i by 0
cout << endl << " " << i << " " << j << " " << *pint << " " << pint << endl;
*pint += 2; // add 2 to i
cout << endl << " " << i << " " << j << " " << *pint << " " << pint << endl;
}
++++
In obigem Beispiel fungiert ''*pint'' als ''int''-Variable und dementsprechend können auch alle dafür definierten Operationen mit ihr ausgeführt werden.
{{:inf:cpp:zeigeroperatoren1.png?300|}}
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.