9.6 Dvojrozmerné pole
9.6.1 Pole pointerov
Deklarujeme pole troch pointerov na typ int:
int *a[3];
Prvky tohto poľa využijeme ako pointery na jednorozmerné polia
t.j. jednotlivé riadky dvojrozmerného poľa. Tieto však zatiaľ
v pamäti neexistujú, pre každý riadok musíme teda pamäť alokovať:
a[0] = (int*)malloc(5*sizeof(int)); a[1] = (int*)malloc(5*sizeof(int)); a[2] = (int*)malloc(5*sizeof(int));
resp.
for (i = 0; i < 3; i++ ) {
a[i] = (int*)malloc(5*sizeof(int));
}
Teraz už môžeme dvojrozmerné pole normálne používať napr. a[2][3] = 5;
Keďže
riadky poľa alokujeme dynamicky, nemusia ležať bezprostredne za sebou
ako v prípade statického poľa! Takýmto spôsobom môžeme vytvoriť
nielen obdľžnikové pole (tabuľku), ale i "zubaté" pole majúce pevný počet riadkov, pričom každý riadok môže mať rôzny počet prvkov.
|