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.
|