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)


  • Mod

    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+**p

    edit: Den letzten Link musst du Copy&Pasten, da die Linkmarkierung vom Forum keine Sternchen mag.



  • Vielen Dank euch beiden!


Log in to reply