Sunteți pe pagina 1din 2

3.

Variabile locale si variabile globale


Orice variabila se caracterizeaza prin 4 atribute:
- Clasa de memorare – locul unde este memorata variabila respectiva (segment de date, stiva,
heap,registru)
- Vizibilitate -liniile de program din care variabila poate fi accesata
- Durata de viata – timpul cat variabila are alocat timp de memorie. Durata de viata poate fi: statica
(variabila are alocat spatiu de memorie in timpul executiei programului ); locala(variabila are alocat
spatiu in timpul executiei instructiunilor blocului in care a fost declarata) si dinamica
- Tipul: variabile locale, globale si dinamice
Variabilele pot fi definite în orice poziţie într-un program. Astfel putem defini variabile în afara funcţiilor (chiar
în afara funcţiei principale main), în acest caz poartă numele de variabile globale; în interiorul unei funcţii caz
în care le vom numi variabile locale.
Variabilele globale
- Se declara in afara oricarei functii si sunt vizibile si pot fi utilizate in tot programul (functii utilizator si
functia primcipala main) din momentul declararii lor
Atribute:
- Clasa de memorare – segmentul de date;
- Vizibilitate – la nivelul intregului program;
- Durata de viata- statica - atâta timp cât programul se execută;
- La declarare, variabilele globale se iniţializează în mod automat cu 0.

Variabile locale
- Se declara in corpul fuctiilor si sunt accesate doar de functia in care s-au declarat;
Atribute:
- Clasa de memorare – zona de memorie numita stiva;
- Durata de viata – locala, pe tot parcursul execuţiei funcţiei/bloc;
- Vizibilitatea – la nivelul blocului in care au fost declarate;
Observatie:
- Dacă o variabilă este definită în interiorul unui bloc de instrucţiuni, poate fi accesată doar în interiorul
acelui bloc, nu poate fi utilizată înafara lui.
- Orice variabila declarata in main () este locala;
- Daca un parametru apare in lista de parametrii formali, el nu mai poate aparea in lista variabilelor locale
Exemplu 1:
#include <iostream>
using namespace std;
float a; variabilă globală accesibilă pe tot parcursul programului
int main()
{char b=’x’; variabilă locală accesibilă doar în interiorul funcţiei main

{int c=5; variabilă locală accesibilă doar în interiorul blocului în care a fost definită
cout<<a<<b<<c;
}
return 0;}
Observatie:

- În cazul în care într-un bloc sau într-o funcţie sunt vizibile mai multe variabile cu acelaşi nume, dar cu
domenii de vizibilitate diferite, se accesează variabila cu domeniul cel mai mic de vizibilitate.
Exemplu 2:
În programul de mai jos sunt definite două variabile cu numele a. O variabilă globală şi o variabila locală definită în cadrul
funcţiei f. În timpul execuţiei, functia f accesează variabila locală.
#include <iostream>
using namespace std;
int a; //a este variabilă globală
int f() //funcţia de tip int
{int a=5; //funcţia foloseste variabila locala a(definita in funcţie), nu pe cea globală
a++;
return a;}
int main()
scrie 0, a=f(), a=5,a=6, scrie a=6
{cout<<a<<endl;
a=f(); //apelul funcţiei f
cout<<"a="<<a;
return 0;}

Exemple:
3. Să se calculeze şi să se afişeze media aritmetică a două numere reale x şi y. Se va folosi o funcţie calcul care citeşte
două numere reale x şi y, calculează media lor aritmetică şi afişează rezultatul obţinut. Toate variabilele folosite
sunt variabile globale.

#include<iostream>
using name space std;
float x,y, ma;
void medie ()
{ cin>>x>>y;
ma=(x+y)/2;
cout<<”media=”<<ma;}
int main ()
{medie ();
return 0;}
4. Să se calculeze şi să se afişeze media aritmetică a două numere reale x şi y. Se va folosi o funcţie calcul care
calculează media lor aritmetică şi afişează rezultatul obţinut. Valorile variabilelor x şi y sunt citite în funcţia
apelantă.
#include<iostream>
using name space std;
float x,y, ma;
void medie ()
{ ma=(x+y)/2;
cout<<”media=”<<ma;}
int main ()
{cin>>x>>y;
medie ();
return 0;}

S-ar putea să vă placă și