Konstanter Pointer auf einen Pointer
-
Hallo,
ich habe eine Frage, die ähnlich zu der unter http://www.c-plusplus.net/forum/39345-full behandelten ist, welche konstante Pointer diskutiert. Ich möchte einen konstanten Pointer auf einen Pointer implementieren. Ist dann folgende Konstruktion richtig?
datentyp * array_von_pointern[10]; datentyp ** const adresse_des_ersten_eintrags_des_arrays = array_von_pointern;
Und, wie hat man
datentyp ** ptr;
genau zu lesen (d.h. welches der beiden Sternchen sagt, dass man hier einen Pointer auf Pointer hat)?
Vielen Dank für eure Hilfe.
gaias
-
gaias schrieb:
Ich möchte einen konstanten Pointer auf einen Pointer implementieren. Ist dann folgende Konstruktion richtig?
datentyp * array_von_pointern[10]; datentyp ** const adresse_des_ersten_eintrags_des_arrays = array_von_pointern;
Ja. Das
const
bezieht sich immer auf das links davon stehende Element.Und, wie hat man
datentyp ** ptr;
genau zu lesen (d.h. welches der beiden Sternchen sagt, dass man hier einen Pointer auf Pointer hat)?
Von innen nach außen unter Berücksichtigung der Operatorenrangfolge:
ptr
-> *ptr (ptr ist ein Zeiger...)
-> **ptr (ptr ist ein Zeiger auf einen Zeiger ...)
-> datentyp **ptr (ptr ist ein Zeiger auf einen Zeiger auf datentyp)
-
Auch wenn man die Regeln kennen sollte, so hat man doch nicht immer die Geduld, sie bei komplexen Ausdrücken anzuwenden. Daher empfehle ich:
http://cdecl.ridiculousfish.com/
Zum Beispiel deine beiden Fragen (mit int statt datatype):
http://cdecl.ridiculousfish.com/?q=constant+pointer+to+pointer+to+int
und
http://cdecl.ridiculousfish.com/?q=int+**pedit: Den letzten Link musst du Copy&Pasten, da die Linkmarkierung vom Forum keine Sternchen mag.
-
Vielen Dank euch beiden!