Jazyk C - polia
Učebné texty
Jednorozmerné polia
Deklarácia jednorozmerného poľa
Na deklarovanie poľa v C programátor špecifikuje typ prvkov a počet prvkov požadovaných poľom takto
typ menoPola[veľkosť];Toto sa nazýva jednorozmerné pole. Veľkosť musí byť celočíselná konštanta väčšia ako nula a typ môže byť akýkoľvek platný typ v jazyku C. Napríklad deklarácia pola o veľkosti 10:
int pole[10];Iniciálizácia
Prvky pola môžeme inicializovať po jednom alebo pomocou jedného príkazu nasledovne.
int pole[5] = {1000,5,70,64,1};Počet hodnôt medzi zátvorkami {} nemôže byť väčší ako počet prvkov(veľkosť pola), ktoré uvádzame pre pole medzi hranatými zátvorkami []. Ak vynecháte veľkosť poľa, vytvorí sa pole ktoré je dostatočne veľké na to aby mohlo udržať inicializáciu.
Preto, ak napíšeme
int pole[] = {1000,5,70,64,1};Vytvorí sa rovnaké pole ako v predchádzajúcom príkladne.
Prístup k prvkom poľa
K prvku sa pristupuje indexovaním názvu poľa. To sa dosiahne umiestnením indexu prvku do hranatých zátvoriek za názvom poľa.
Napríklad
int cislo = n[8] ;Do premennej cislo sa priradí hodnota(číslo) z pola n ktoré sa nachádza na indexe 8.
Nasledujúci príklad ukazuje, ako používať všetky tri vyššie uvedené koncepty, viď. deklaráciu, priradenie a prístup k poliam
 1 #include <stdio.h>
 2  
 3 int main () {
 4 
 5    int n[ 10 ]; /* n je pole o veľkosti 10 prvkov  */
 6    int i,j;
 7  
 8    /* inicializácia pola n od 0 po 10 */         
 9    for ( i = 0; i < 10; i++ ) {
10       n[ i ] = i + 100; /* zapíše prvok na mieste i hodnotou i + 100 */
11    }
12    
13    /* výstup hodnoty každého prvku z pola  */
14    for (j = 0; j < 10; j++ ) {
15       printf("Prvok[%d] = %d\n", j, n[j] );
16    }
17  
18    return 0;
19 }
Výstup
Prvok[0] = 100
Prvok[1] = 101
Prvok[2] = 102
Prvok[3] = 103
Prvok[4] = 104
Prvok[5] = 105
Prvok[6] = 106
Prvok[7] = 107
Prvok[8] = 108
Prvok[9] = 109Viacrozmerné polia
Deklarácia viacrozmerného poľa
Programovací jazyk C umožňuje vytvárať aj viacrozmerné polia. Toto je všeobecná deklarácia viacrozmerného poľa.
typ menoPola[veľkosť_1][veľkosť_2]...[veľkosť_N];Nasledujúca deklarácia je pre inicializáciu trojrozmerného pola
typ trojrozmerne[2][5][4];Dvojrozmerné polia
Najjednoduchšou formou viacrozmerného poľa je dvojrozmerné pole. Dvojrozmerné pole je v podstate zoznam jednorozmerných polí. Na deklarovanie dvojrozmerného celočíselného poľa veľkosti [x][y] by ste napísali takto.
typ menoPola[x][y];Kde typ môže byť akýkoľvek platný typ údajov C a menoPolabude platný identifikátor C. Dvojrozmerné pole možno považovať za tabuľku, ktorá bude mať x počet riadkov a počet stĺpcov y. Taktiež môžme považovať dvojrozmerné pole za maticu čísel. Dvojrozmerné pole a, ktoré obsahuje tri riadky a štyri stĺpce, je možné zobraziť takto.
| Stĺpec 0 | Stĺpec 1 | Stĺpec 2 | Stĺpec 3 | |
|---|---|---|---|---|
| Riadok 0 | a[0][0] | a[0][1] | a[0][2] | a[0][3] | 
| Riadok 1 | a[1][0] | a[1][1] | a[1][2] | a[1][3] | 
| Riadok 2 | a[2][0] | a[2][1] | a[2][2] | a[2][3] | 
Každý prvok v poli a je teda identifikovaný názvom prvku vo forme a[i][j], kde „a“ je názov poľa a „i“ a „j“ sú indfexy „bunky“ kde sa daný prvok nachádza.
Inicializácia dvojrozmerných polí
Viacrozmerné polia sa môžu inicializovať zadaním hodnôt v zátvorkách pre každý riadok. Nasleduje pole s 3 riadkami a každý riadok má 4 stĺpce.
1 int a[3][4] = {  
2    {0, 1, 2, 3} ,   /*  inicializácia pre riadok 0 */
3    {4, 5, 6, 7} ,   /*  inicializácia pre riadok 1 */
4    {8, 9, 10, 11}   /*  inicializácia pre riadok 2 */
5 };
Alebo môžme napísať inicializáciu aj do jedného riadka. Nasledujúca inicializácia je ekvivalentná s predchádzajúcim príkladom.
1 int a[3][4] = {  
2    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}
3 };
Prístup k prvkom dvojrozmerného poľa
K prvku v dvojrozmernom poli sa pristupuje pomocou indexu riadka a indexu stĺpca poľa. Napríklad
int val = a[2][3];Práca z dvojrozmerným polom
Ukážme si príklad pre vypísanie dvojrozmerného pola.
 1 #include <stdio.h>
 2  
 3 int main () {
 4 
 5    /* inicializácia dvojrozmerného pola ktoré má 5 riadkov a 2 stĺpce*/
 6    int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};
 7    int i, j;
 8  
 9    /* výstup každého prvku pola, najprv sa vypíšu všetky stĺpce daného riadku až potom sa prejde na ďalší riadok */
10    for ( i = 0; i < 5; i++ ) {
11       for ( j = 0; j < 2; j++ ) {
12          printf("a[%d][%d] = %d\n", i,j, a[i][j] );
13       }
14    }
15    return 0;
16 }
Po skompilovaní a spustení vyššie uvedeného kódu sa získa nasledujúci výsledok.
a[0][0]: 0
a[0][1]: 0
a[1][0]: 1
a[1][1]: 2
a[2][0]: 2
a[2][1]: 4
a[3][0]: 3
a[3][1]: 6
a[4][0]: 4
a[4][1]: 8