Sunteți pe pagina 1din 1

n C++ variabilele pot fi mprite n 3 mari categorii: locale, globale i dinamice

Sistemul de operare aloc fiecrui program trei zone distincte n memoria intern n care se gsesc memorate
variabilele programului:
1. Segment de date ( variabile globale sau cele declarate static/pag139 manual)
2. Segment de stiv ( variabile locale/ subprograme)
3. Heap. ( variabile alocate dinamic de utilizator )
Exist i posibilitatea ca variabilele s fie memorate ntr-un anumit registru al microprocesorului, caz n care
accesul la acestea este foarte rapid. (vezi pag 140 manual)
O variabil se caracterizeaz prin 4 atribute:
o Clasa de memorare locul unde este memorat variabila respectiv; o variabil poate fi memorat n:
segmentul de date (variabilele globale)
segmentul de stiv (n mod implicit, variabilele locale)
heap
un registru al microprocesorului (n mod explicit, variabilele locale).
o Vizibilitatea precizeaz liniile textului surs din care variabila respectiv poate fi accesat. Exist urmtoarele
tipuri de vizibilitate:
la nivel de bloc (instruciune compus) (variabilele locale);
la nivel de fiier surs (n cazul n care programul ocup un singur fiier surs) (variabilele globale, dac
sunt declarate naintea tuturor funciilor);
la nivel de clas (n legtur cu programarea orientat pe obiecte).
o Durata de via timpul n care variabila respectiv are alocat spaiu n memoria intern. Avem:
durat static variabila are alocat spaiu n tot timpul execuiei programului (variabilele globale);
durat local variabila are alocat spaiu n timpul n care se execut instruciunile blocului respectiv
(variabilele locale);
durat dinamic alocarea i dezalocarea spaiului necesar variabilei respective se face de ctre
programator prin operatori specifici;
o Tipul variabilei
pointeri
#include <iostream.h>
void schimba(int *a,
int *b)
{ int aux = *a;
*a = *b;
*b = aux;
}
main() {
int x = 2, y = 3;
schimba(&x, &y);
cout<< x << " " << y;
}

Analizati efectul celor 3 subprograme(funcii procedurale)


#include <iostream.h> #include <iostream.h>
void schimba(int a, void schimba(int &a,
int b)
int &b)
{ int aux = a;
{ int aux = a;
a = b;
a = b;
b = aux;
b = aux;
}
}
main() {
main() {
int x = 2, y = 3;
int x = 2, y = 3;
schimba(x, y);
schimba(x, y);
cout<< x << " " << y; cout<< x << " " << y;
}
}

int prim(int n)
{ int i;
for (i = 2; i<= n/2; i++)
if(n%i==0) return 0;
return 1; }

Apel posibil- funcii operand


1. Atribuire x=prim(n);
2. Decizie
If(prim(vb)).
3. Afisare
Cout<<prim(8);

Observaii-Parametrii actuali( efectivi/ la apel):


1. corespunztori param.transmii prin valoare pot fi exprimai
prin:valoare, expresie, variabila de memorie(identificator
data) sau adresa unei vb. de memorie la cei de tip pointeri
2.
la cei corespunztori param.transmii prin referin pot fi
exprimai numai prin variabile de memorie

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