1.10. Declaratia de tablou
2018/12/23 in Programare in C
Un tablou, ca orice variabila simpla, trebuie declarat inainte de a fi utilizat. In forma cea mai simpla, declaratia de tablou contine tipul comun elementelor sale, numele tabloului si limitele superioare pentru fiecare indice, incluse intre paranteze patrate:
tip nume[lim1][lim2]...[limn];
unde:
tip | este un cuvant cheie pentru tipurile predefinite |
limi | este limita superioara a indicelui al i-lea, aceasta inseamna ca indicele al i-lea poate avea valorile: 0, 1, ..., limi-1 |
Limitele limi (i=1,2, ..., n) sunt expresii constante. Prin expresie constanta intelegem o expresie care poate fi evaluata la compilare in momentul cand este intalnita de compilator.
Elementele unui tablou pot fi referite folosind variabile cu indici.
In C, numele unui tablou este un simbol care are ca valoare adresa primului sau element.
La intalnirea unei declaratii de tablou, compilatorul aloca o zona de memorie necesara pentru a pastra valorile elementelor sale. Numele tabloului respectiv poate fi utilizat in diferite expresii si valoarea lui este adresa de de inceput a zonei de memorie care i-a fost alocata.
Exemple:
1. int vect[10];
Aceasta declaratie defineste tabloul vect de 10 elemente. El are tipul int. Pentru acest tablou se aloca 10*2=20 octeti.
vect este un simbol a carui valoare este adresa primului sau element, adica adresa lui vect[0]. Deci vect[0] are ca valoare valoarea primului element al tabloului, iar vect are ca valoare adresa acestui element.
2. char tab[100];
Tabloul tab este un tablou unidimensional de tip char, care are 100 de elemente. I se aloca 100 de octeti si tab are ca valoare adresa elementului tab[0].
3. double dmat[10][50];
Tabloul dmat este un tablou bidimensional de tip double. El reprezinta o matrice de 10 linii a cate 50 de coloane fiecare. Compilatorul rezerva pentru acest tablou 10*50*8=4000 octeti. La elementele acestui tablou ne referim prin:
dmat[0][0] | dmat[0][1] | ... | dmat[0][49] |
dmat[1][0] | dmat[1][1] | ... | dmat[1][49] |
... | |||
dmat[9][0] | dmat[9][1] | ... | dmat[9][49] |
dmat are ca valoare adresa elementului dmat[0][0].