2D Array, Pointer usw.



  • Hallo,
    wie man ein 2D Array anlegt ist mir klar, jetzt würd ich nur mal gerne wissen was genau da passiert.

    int **a = (int **)malloc(aR*sizeof(int *));
    a[0] = (int *)malloc(aR * aC * sizeof(int));
     for(i = 1; i < aR; i++)
             a[i] = a[0] + i * aC;
    

    wenn ich nun

    sendpartofarray((void *)a[0], sizeofnewArray) //zum beispiel die ersten 3 reihen

    an eine funktion übergebe, wird nur zum beispiel die hälfte des arrays übergeben, wieso??? 😕

    vielen dank



  • Wahrscheinlich wirds an der Berechnung von sizeofnewArray liegen. 😉
    Need more info
    Kurt



  • sizeofnewarray gibt an wieviele elemente zumbeispiel 2*breitederMatrix
    die neue matrix haben soll.

    in dem fall wird eine matrix mit 2 zeilen und der breite der alten matrix erstellt.

    thanx



  • hares, dein code macht wenig sinn. weisst du, was du da machst?

    hier ein ordentlicher 2d array code:

    int **matrix, zeilen=5, spalten=10, i;
    matrix = malloc(zeilen * sizeof(int*));
    for (i = 0; i < zeilen; ++i)
        matrix[i] = malloc(spalten * sizeof(int));
    
    /* jetzt kann gearbeitet werden */
    
    for (i = 0; i < zeilen; ++i)
        free(matrix[i]);
    free(matrix);
    


  • nein nein, das programm läuft super,



  • mehr code bitte. wie soll man hier diagnosen stellen, wenn man nichts in der hand hat??
    und wenn du dabei bist, den code bitte aufs absolut noetigste reduzieren, das den fehler noch darstellt.



  • hares schrieb:

    nein nein, das programm läuft super,

    Das kannich mir gut vorstellen.c.rackwitz hat schon recht Du reservierst einfach viel zu viel speicher für die Spalten deiner Matrix. Wenn du dann nur einen teil kopieren willst dann stimmt einfach die Anzahl nicht.
    Kurt


Anmelden zum Antworten