2d Arrays Basics



  • hallo, ich möchte ein 2dimensionales array erzeugen.
    wie macht man das denn genau?
    hab ein bissl gegoogelt aber nur die variante char m[10][10]; gefunden....

    char** a = 0;
    	a = new char*[10];
    	a[0][0] = 'c';
    

    also zuerst einen pointer auf einen pointer und das mit 0 initialisieren....
    zweite zeile ist mir nicht ganz klar was da passiert, könnte mir das jemand erklären?
    und dann schließlich der (schreibende) zugriff auf eine position....
    das ganze gibt aber einen segmentation fault ....



  • um ein zweidimensionales array zu erzeugen genügt

    int arr[5][3];
    

    und du hast ein 5x3 Array.

    Viel Spaß!



  • user123 schrieb:

    das ganze gibt aber einen segmentation fault ....

    Mit

    a = new char*[10];
    

    erzeugst du war 10 Zeiger auf char, diese werden aber nicht initialisiert. Das musst du noch für jeden Zeiger machen.

    char** a = 0;
    a = new char*[10];
    a[0] = new char[10];
    a[1] = new char[55];
    a[2] = new char[54];
    a[3] = new char[99];
    a[4] = new char[2000];
    //...
    a[0][0] = 'c';
    a[4][1999] = 'e';
    

    Mit der Methode kannst du Arrays erzeugen, die nicht so langweilig symmetrisch sind. 🙂

    P.S.: Lass asc und Nexus die Konstruktion nicht sehen, sonst gibt es auf die Mütze. 😉



  • Hier nochmal mit vector:

    vector< vector<char> > arr2d( 10, vector<char>(20) ); // 10x20-Array
    arr2d[0][0] = 'x';  // Erstes Element
    arr2d[9][19] = 'z'; // Letztes Element
    

Anmelden zum Antworten