Documente Academic
Documente Profesional
Documente Cultură
Fișa nr. 1
II. Tablouri
Un tablou (array) este un ansamblu de variabile de acelaşi tip la care se face
referire folosindu-se un acelaşi nume.
Un anume element dintr-un tablou este indicat prin intermediul unui indice
(index).
În C, toate tablourile sunt alcătuite din locaţii de memorie învecinate. Adresa de
memorie cea mai mică corespunde primului element, iar adresa cea mai mare
corespunde ultimului element.
Tablourile pot avea de la una la mai multe dimensiuni.
Tabloul cel mai des folosit în C este şirul – string, care este un tablou de caractere
care se încheie cu un zero. Acest mod de a privi şirurile conferă limbajului C mai multă
putere şi eficienţă faţă de alte limbaje.
unde tip_de_baza reprezintă tipul tabloului, adică al fiecărui element inclus în tablou, iar
dimensiune defineşte numărul de elemente conţinute în tablou.
Un element al tabloului este accesat folosind ca index poziţia elementului, astfel
tabloul_meu[6] va referi al şaptelea element al tabloului tabloul_meu.
OBSERVAȚII:
1. În C, "numerotarea" elementelor tablourilor începe cu poziţia 0.
Astfel, dacă avem definiţia:
int V[100];
primul element al tabloului va fi V[0], iar ultimul V[99].
2. Tablourile sunt stocate în memorie în locaţii consecutive, un tablou ocupând o zonă
contiguă de memorie, cu primul element al tabloului aflat la adresa mai mica.
3. O problemă legată de tablouri este că în C nu se face nici o verificare legată de
"marginile" tabloului, astfel că se pot accesa greşit elemente din afara tabloului.
De exemplu, pentru definţia:
int V[100];
dacă accesăm V[105] nu se va semnala nicio eroare, returnându-se
valoarea de la o locaţie de memorie aflată la o distanţă de 5 locaţii faţă de
sfârşitul tabloului, fapt ce va duce la comportări "bizare" ale programului.
Aceeaşi situaţe, dar faţă de începutul tabloului, se întâmplă la accesarea
V[-5].
4. Este datoria programatorului să evite astfel de situații !
EXEMPLU:
char s[100];
int x[25];
5. Primul element dintr-un vector va avea indexul 0, iar ultimul element stocat va avea
indexul dim-1
6. Dimensiunile tabloului trebuie să fie expresii constante
7. Compilatorul nu face verificări pentru depăşirea dimensiunii tabloului
8. Pentru alocarea unui tablou sunt necesari
nr_elemente*sizeof(tip) octeţi,
unde tip este tipul de bază al tabloului
9. Atribuirea tablourilor NU poate fi făcută direct
EXEMPLU :
int x[10],y[10];
x = y; // operaţie ilegală