Pointer auf Array in Array



  • Hi Leute,

    ich habe folgendes vor:

    int thomas[9][4];
    

    Nun möchte ich ein 3x3 Array erzeugen, in welches ich Pointer auf die 9 1x4-Arrays aus "thomas" schreibe.

    Ich dachte hierzu an folgendes:

    int (* sebastian[4]) [3][3];
    

    Erste Frage: Ist der "sebastian" so richtig, oder schon falsch?
    Zweite Frage: Falls es richtig ist, wie weise ich die Pointer auf die 1x4-Arrays aus "thomas" an "sebastian" zu?

    Würd mich sehr freuen, wenn mir jemand helfen könnte.

    VG
    Pascal



  • Wenn ich Dich richtig verstanden habe, dann möchtest Du mit sebastian nur auf die einzelnen Einträge des Arrays thomas zeigen.

    sebastian würde ich so schreiben:

    int (* sebastian[3][3]);
    

    Damit hast Du 3x3 Pointer auf einen int-(Start)-Wert, welche Du leicht füllen kannst.

    Bei einem int* kannst Du wie auf ein Array zugreifen (in Deinem Fall die restlichen 4).

    Schaub Dir mal den Code an:

    int thomas[9][4];
        int (* sebastian[3][3]); 
    
        // Pointer füllen
        for ( int i = 0; i < 3; i++ )
            for ( int k = 0; k < 3; k++ )
                sebastian[ i ][ k ] = &thomas[ i*3 + k ][ 0 ];
    
        thomas[ 5 ][ 3 ] = 100;
    
        int val = sebastian[ 1 ][ 2 ][ 3 ] ;
    

    Aber Vorsicht, hier gibt es keinerlei Bereichsüberprüfungen, Du solltest also wissen wohin Du zugreifst...

    Grüße,
    Chriss


Anmelden zum Antworten