Zeigerdeklarationen

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Zeiger - Index

Ein Zeiger muss als auf einen bestimmten Typ zeigend deklariert werden, auch wenn dieser Typ void ist (also ein Zeiger auf ein beliebiges Objekt). Sobald ein Zeiger einmal deklariert ist, kann man ihn auch auf ein Objekt mit einem anderen Typ zeigen lassen. Mit Hilfe des Compilers können Sie Zeiger ohne Typumwandlung (Typecasting) neu zuordnen. Sie erhalten dabei jedoch eine Warnung vom Compiler, außer wenn der Zeiger ursprünglich als Zeiger auf void deklariert war. In C, aber nicht in C++, können Sie einen void*-Zeiger einem nicht-void*-Zeiger zuweisen. Weitere Informationen finden Sie unter void.

Warnung:  Sie müssen Zeiger vor ihrer Verwendung initialisieren.

Wenn type ein vordefinierter oder benutzerdefinierter Typ ist, einschließlich void, dann legt die Deklaration



 type *ptr;   /* Uninitialisierter Zeiger */



ptr als Zeiger vom Typ "Zeiger auf type" fest. Alle Regeln für Gültigkeitsbereich, Dauer und Sichtbarkeit treffen auf das gerade deklarierte Objekt ptr zu.

Ein NULL-Zeigerwert ist eine Adresse, die sich garantiert von jedem in einem Programm verwendeten gültigen Zeiger unterscheidet. Die Zuweisung der Integerkonstante 0 ordnet einem Zeiger einen NULL-Zeigerwert zu.

Aus Gründen der Lesbarkeit kann auch das Kürzel NULL (definiert in den Include-Dateien der Standardbibliothek, z.B. in stdio.h) verwendet werden. Alle Zeiger können erfolgreich auf Gleichheit oder Ungleichheit zu NULL überprüft werden.

Der Zeigertyp "Zeiger auf void" darf nicht mit dem NULL-Zeiger verwechselt werden. Die Deklaration



 void *vptr;



deklariert vptr als generischen Zeiger, dem jeder "Zeiger auf type"-Wert, einschließlich NULL, zugewiesen werden kann. Zuweisungen ohne geeignete Typumwandlung zwischen einem "Zeiger auf type1" und einem "Zeiger auf type2" – wobei type1 und type2 unterschiedliche Typen sind – können eine Compiler-Warnung oder einen Fehler hervorrufen. Wenn type1 eine Funktion und type2 keine Funktion ist (oder umgekehrt), dann sind Zeigerzuweisungen nicht erlaubt. Ist type1 ein Zeiger auf void, dann ist eine Typumwandlung nicht notwendig. Ist type2 ein Zeiger auf void, so ist in C ebenfalls keine Typumwandlung notwendig.