Pointer(**,***)



  • Hallo,

    welche Bedeutung haben die Pointer ** und ***.

    Ist das ein Pointer der auf sich selbst zeigt (à la this->) oder welche Bedeutung hat der ** und der ***Pointer?

    Gibt es neuerdings auch dreidimensionale Arrays[][][]? Ich kannte bisher nur **Pointer, ebenfalls nur zweidim. Arrays[][].

    Danke.



  • Das ist ein Doppelpointer und ein (Triple ?) - Pointer.

    Das ist einfach ein Zeiger auf ein Zeiger, bzw. Ein Zeiger auf einen Zeiger auf einen Zeiger auf ein Objekt.

    int i; //Objekt
    int* pi = &i; //Zeiger auf Objekt
    int** ppi = π //Zeiger auf Zeiger auf Objekt
    int*** pppi = &ppi; //Zeiger auf Zeiger auf Zeiger auf Objekt
    ...
    

    Alles klar?

    Ein Mehrdimensionales Array hat in erster Linie mal nichts mit Doppelzeiger zu tun. Das ist einfach eine bequemere Darstellung für den Compiler. Intern ist das immernoch ein Zeiger auf Objekt. (Hald multipliziert mit den Dimensionen).
    Da kannst du eigentlich beliebig viele Dimensionen machen. (Allerdings wird mehr als 2 Dimensionen kaum gebraucht. Vor allem, wegen dem raschen hohen Speicherverbrauch).



  • Danke für die tolle Erklärung.

    Auch für die Triplepointer und die Arrays.

    Sprich es ist also möglich 3D Arrays zu basteln, die jedoch aber sehr speicherlastig sind.

    Danke für die Info.



  • Hansemann2008 schrieb:

    Sprich es ist also möglich 3D Arrays zu basteln, die jedoch aber sehr speicherlastig sind.

    Du kannst Arrays mit beliebig vielen Dimensionen erstellen. Die Speicherbelastung ist pro Element nicht grösser. Ein 3D-Array mit den Dimensionen [2][3][5] entspricht vom Speicherverbrauch einem 1D-Array [30].



  • Ein 3D-Array mit den Dimensionen [2][3][5] entspricht vom Speicherverbrauch einem 1D-Array [30].

    Es entspricht nicht nur einem, es ist genau das. Nur kann der Compiler die [][][] Schreibweise für uns umwandeln. 😉

    Wegen dem Speicher habe ich micht vielleicht nicht richtig ausgedruckt. Es ist nicht mehr Speicher, der verbraucht wird, aber mit einem [10][50][10], das nicht sehr gross aussieht, hat man schnell 5000 Objekte. 😉


Anmelden zum Antworten