Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Pointeri si tablouri

c



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 668
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved