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.