9.  Ukazovatele a polia

9.6  Dvojrozmerné pole

Samozrejme, že aj v C môžeme používať polia, ktoré majú viac dimenzií než jednu. Najčastejšie ide o dvojrozmerné polia. Statické dvojrozmerné pole môžeme jednoducho deklarovať napr. takto:

int a[5][10];

 pole a má 5 riadkov a 10 stĺpcov, riadkové indexy sú od 0 po 4, stĺpcové od 0 po 9!

S prvkami poľa pracujeme bežným spôsobom napr. a[0][3] = 10;

a[0] je adresa na ktorej začína prvý riadok poľa, a je pointer na celé dvojrozmerné pole.
Pre adresu prvku poľa platí:  &a[i][j] == a[i] + j == *(a + i) + j

 Statické pole je uložené v dátovej oblasti pamäte a to v súvislom bloku pamäte po riadkoch! Keďže C nekontroluje medze polí, príkazom a[5][0] = 10; by sme nechtiac prepísali hodnotu prvého prvku v druhom riadku poľa t.j. prvku a[1][0].


Ak chceme pracovať s dynamickým dvojrozmerným poľom máme oveľa viac možností ako to urobiť. Ukážeme si dva najbežnejšie prístupy.