Scrigroup - Documente si articole

     

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


Variabile locale

c



+ Font mai mare | - Font mai mic



Variabile locale

Variabilele locale nu sunt valabile in tot programul. Ele au o utilizare locala in doua feluri:

ca si variabile automatice (alocate pe stiva) la nivelul unei functii;



ca si variabile statice (alocate in zona programului) la nivel de fisier (eventual si la nivelul unei functii).

Variabilele declarate in interiorul unei functii si care nu sunt declarate ca externe sunt variabile locale. Lor li se aloca memorie pe stiva la intrarea in functia in care sunt declarate. La iesirea din functie, stiva se reface la continutul dinaintea apelului si variabilele locale pierd alocarea. Deci ori de cate ori se apeleaza o functie, variabilele locale acesteia (denumite si variabile automatice) se aloca (primesc memorie) pe stiva si la iesirea din functie variabilele locale sunt sterse din stiva.

Variabilele locale pot sa nu fie alocate pe stiva, ci intr-o zona de memorie destinata acestui scop. O astfel de variabila locala se numeste variabila statica. O variabila locala statica se declara printr-o declaratie obisnuita, precedata de cuvantul cheie static. O variabila statica poate fi declarata atat in corpul unei functii cat si in afara oricarei functii. In cazul unei variabile statice declarata in interiorul unei functii alocarea nu se face pe stiva ci intr-o zona de memorie destinata acestui scop, aceasta fiind deosebirea esentiala fata de variabilele automatice. In cazul in care o variabila statica este declarata in afara functiilor, ea este definita din punctul in care a fost declarata si pana la sfarsitul fisierului sursa care contine declaratia ei. Spre deosebire de variabilele globale, o variabila statica nu poate fi declarata ca externa si deci nu poate fi utilizata in functiile din alte fisiere sursa diferite de cel in care a fost declarata.

Se recomanda ca tablourile mari sa fie declarate statice, deoarece daca sunt automatice pot depasi capacitatea stivei (care are implicit o valoare de cativa Kocteti).

Exemple:

Fisierul fisier1.c este un fisier sursa care contine 2 variabile globale i si d , o variabila statica x si doua functii f si main. Functia main contine variabila statica a iar functia f contine variabila statica b.

int i; // definitia variabilei globale i

double d; // definitia variabilei globale d

static int x; // definitia variabilei statice x, locala fisierului fisier1.c

void main (void)

Variabilele a si c fiind locale functiei main nu pot fi utilizate in functia f. Analog, variabilele p si b sunt locale in functia f, nu pot fi utilizate in functia main.

Fisierul fisier2.c contine functiile f1 si f2 care intra in componenta aceluiasi    program ca si functiile main si f din fisierul fisier1.c

static unsigned t; // definitia variabilei statice t, locala fisierului fisier2.c

void f1()

void f2()

Variabila statica x definita in fisierul fisier1.c nu poate fi utilizata in fisierul fisier2.c. De asemenea, variabila statica t nu poate fi utilizata in fisierul fisier1.c. Variabila globala d nu poate fi utilizata in functia f2, ea nefiind declarata ca si externa.

Observatii:

1o. Variabilele globale constituie un mijloc simplu de interfata intre functiile unui program. Se recomanda a fi folosite cand dorim transferuri de valori intre doua sau mai multe functii in asa fel incat modificarile realizate de o functie sa fie accesibile pentru toate functiile programului. Nu trebuie sa se faca abuz in utilizarea variabilelor globale deoarece constituie si o sursa potentiala de erori, pentru ca accesul unui mare numar de functii la anumite date globale conduce deseori la modificari nedorite si greu evidentiabile.

2o. Functiile sunt considerate cu atributul implicit extern. Daca intr-un program exista mai multe fisiere sursa atunci o functie poate fi apelata oriunde, bine inteles respectand conventia definirii ei sau a prototipului ei inainte de a fi folosita. Putem sa limitam definind functiile cu atributul static precedand antetul functiei prin cuvantul cheie static. Astfel functia respectiva devine locala si deci apelabila doar in fisierul in care este definita.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1034
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