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.