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[0][5] = 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.