Pointerproblem



  • Hallo!

    Ich stehe eben vor der folgenden Frage:

    int *ptr[4];
    

    ... ist ein Zeiger auf ein Array von int's mit 4 Elementen.

    Wie kann man am kürzesten ein Array von n-Zeigern deklarieren, wobei jeder Zeiger auf ein Array vom gleichen Typ zeigt (also ein Array mit n-Elementen vom Typ ptr(Beispiel oben))?
    Geht dies mit einer Deklaration?

    Danke für eure Hilfe!



  • struct _Ptrs
    {
       int *Ptr[4];
    }Ptrs[10];
    

    ... währe dass kürzeste was mir einfällt, scheint mir aber zu umständlich.



  • HECHT schrieb:

    int *ptr[4];
    

    ... ist ein Zeiger auf ein Array von int's mit 4 Elementen.

    nee, das ist ein array von 4 int-pointern. ein zeiger auf ein int-array ist einfach nur 'int *ptr'



  • Hmm...

    Und wie deklarie ich dann am einfachsten einen Zeiger der auf einen Typ von einem Array zeigt?

    Dann müsste es ja für mein Beispiel (Array von Zeigern die auf ein Array zeigen) so aussehen:

    struct _ElementPtr
    {
       int Element[4];
    }*ElementPtr[10];
    

    Geht das nicht einfacher?



  • HECHT schrieb:

    Geht das nicht einfacher?

    int **ptr[N]; // ein Array (mit N Elt.en) aus Zeigern auf ( Zeiger auf ints || Int-Arrays)
    
    [b]Tipp[/b]: du kannst das von rechts nach links lesen, dann weißt du genau was es ist. Bsp. von oben:
    [N] --> ein Array
    ptr --> (nur der Variablenname)
    *   --> von Zeigern auf
    *   --> Zeiger auf
    [cpp]int[/cpp] --> int
    ------> ein Array aus Zeigern, die auf Zeiger auf Integer zeigen
    
    das funktioniert auch noch mit [cpp]const[/cpp]:
    
    [cpp]int const * ptr2 [5] const = {/*...*/}; // ob man das sinnvoll nutzen kann?[/cpp]
    
    was ist ptr2?
    


  • HECHT schrieb:

    Dann müsste es ja für mein Beispiel (Array von Zeigern die auf ein Array zeigen) so aussehen:

    Schonmal mit Klammern probiert?



  • D@niel $chumann schrieb:

    int **ptr[N]; // ein Array (mit N Elt.en) aus Zeigern auf ( Zeiger auf ints || Int-Arrays)
    

    [code]
    Tipp: du kannst das von rechts nach links lesen, dann weißt du genau was es ist. Bsp. von oben:
    [N] --> ein Array
    ptr --> (nur der Variablenname)
    * --> von Zeigern auf
    * --> Zeiger auf

    int
    

    --> int
    ------> ein Array aus Zeigern, die auf Zeiger auf Integer zeigen

    Danke, ich brauche aber Zeiger die auf den Typ (z.B.) int[4] zeigen, da ich diesen Typ implizit bei einem Template übermitteln muß.



  • Shade Of Mine schrieb:

    Schonmal mit Klammern probiert?

    Wie sollen mir da Klammern helfen können?



  • HECHT schrieb:

    Shade Of Mine schrieb:

    Schonmal mit Klammern probiert?

    Wie sollen mir da Klammern helfen können?

    ja wie? hab' auch keine idee 😕



  • z.B. so:

    int (*ptr)[4];
    

    Ein Zeiger auf ein Array von 4 ints



  • YASC schrieb:

    z.B. so:

    int (*ptr)[4];
    

    Ein Zeiger auf ein Array von 4 ints

    yo, stimmt.


Anmelden zum Antworten