Keresés

Új hozzászólás Aktív témák

  • kovisoft

    őstag

    válasz DopeBob #6138 üzenetére

    Amikor egy szimpla 1 dimenziós tömböt allokálsz, akkor azt egy szimpla pointerbe rakod bele:

    int *array = malloc(sizeof(int[ARRAY_SIZE]));

    És utána array[i]-vel hivatkozol az elemeire. Ha ezt ki akarjuk terjeszteni 2 dimenzióra, akkor hozzáteszünk mindkét oldalhoz +1 dimenziót, de miért tennénk +2 dimenziót a bal oldalhoz?

    int (*twod_array)[COLUMNS] = malloc(sizeof(int[ROWS][COLUMNS]));

    Így a twod_array egy olyan pointer, ami "COLUMNS db integerből álló tömb" típusú adatra mutat, ilyenekből allokáltunk ROWS db-ot, és twod_array[i][j]-vel hivatkozunk az elemeire. Legalábbis szerintem így kell, de bevallom, nem próbáltam ki.

    Viszont mint írtam, csinálhatod azt is, hogy te számolod át a 2 dimenziós indexet 1 dimenziósra, ekkor elég egy nagy 1 dimenziós tömböt allokálni:

    int *simulated_twod_array = malloc(sizeof(int)*ROWS*COLUMNS);

    Aztán így hivatkozol az i. sor j. oszlopára: simulated_twod_array[i*COLUMNS+j].

Új hozzászólás Aktív témák

Hirdetés