====== 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.