Kann mir das mal jemand erklären!!!



  • Ich versuche einen pointer auf ein zwei dimensionales Array zu setzen.
    mit folgendem Code:

    #include <iostream>
    
    int main() {
    int arr[3][3];
    int **ptr_arr;
    
    ptr_arr=arr;
    return 0;
    }
    

    Wieso funzt das nicht - compi meckert immer.
    Bei eindeminsionálen array geht das.
    Wie soll man das machen, wenn man z.b. mit Matrizen rechnen will? 😕



  • meistens hilft es auch zu wissen was der compilier mekert

    #include <iostream>
    
    int main() 
    {
        int arr[3][3];
        int *ptr_arr;
    
        ptr_arr=arr;    // ptr_arr muss du jetzt so behandeln als abs auf ein "int arr[9];" zeigt
                        // z.b. &arr[0][2] == ptr_arr + 2 oder &arr[1][2] == ptr_arr + 5
        return 0;
    }
    


  • Ahso im Speicher kann man sich das dann so vorstellen?

    Arr [0][0] [0][1] [0][2] [1][0] [1][1] [1][2] [2][0] [2][1] [2][2]
    9 Stellen und ich mach ein normalen Pointer auf [0][0] und greife über pupsnormale Pointerarithmetik auf die Elemente zu!!!
    Und das ganze funzt dann auch für mehr Dimensionen z.b. 5.
    Ahhhh - Ich glaub ich habs gerafft - Danke Dimah

    Mann und ich rack mir hier schon stunden einen ab.



  • Übrigens sehr unschöner Titel...


Anmelden zum Antworten