CATEGORII DOCUMENTE |
Pointeri si tablouri
Intre pointeri si tablouri exista o stransa legatura in limbajul C. Exista insa o mare deosebire intre tablouri si pointeri pe care trebuie sa o avem mereu in vedere. Un tablou consta intotdeauna dintr-o mare cantitate de memorie, indeajuns de mare pentru a retine toti octetii corepunzatori tuturor elementelor tabloului. Astfel, tabloul q declarat ca short q[100]; rezerva 2x100 octeti de memorie iar int q[100] rezerva 4x100 octeti de memorie.
Pe de alta parte, pentru un pointer se aloca o zona de memorie redusa la numai cativa octeti necesari pentru a retine o adresa de memorie. De fapt, zona de memorie alocata unui pointer depinde de tipul pointerului (tipul datelor spre care puncteaza acesata) si va fi de numai cativa octeti ( in exemplele anterioare - 4 octeti).
Consideram secventa:
char sir[80];
char *p1;
p1 = sir;
Acest fragment face ca p1 sa adreseze primul element al tabloului sir.
In C numele unui tablou fara indici este adresa de start a tabloului. De fapt, numele tabloului este un pointer la tablou.
Ca o concluzie, un pointer declarat sau numele unui tablou fara indici reprezinta adrese, pe cand numele unui tablou cu indici se refera la valorile stocate in acea pozitie in tablou.
Deoarece indicele inferior al oricarui vector este zero, pentru a referi al 5-lea element al sirului sir, putem scrie sir[4] sau *(p1+4) sau p1[4]. Deci pointerul p1 indica spre primul element al lui sir.
Pentru a avea acces la elementul unui tablou, in limbajul C, se folosesc 2 metode :
utilizarea indicilor tabloului;
utilizarea pointerilor .
Deoarece a doua metoda este mai rapida, in programarea in C, de regula, se utilizeaza aceasta metoda.
Pentru a vedea modul de utilizare a celor doua metode, consideram un program care tipareste cu litere mici un sir de caractere introdus de la tastatura cu litere mari:
Exemplu: Versiunea cu indici
void main (void)
Exemplu: Versiunea cu pointeri
void main (void)
Pointerii sunt rapizi si usor de utilizat cand se doreste referirea elementelor unui tablou in ordine strict crescatoare sau strict descrescatoare. Daca insa se doreste referirea aleatoare a elementelor unui tablou, atunci indexarea tabloului este cel mai simplu si sigur de
utilizat.
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 744
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved