Sunteți pe pagina 1din 3

Alocarea dinamica a memoriei

1. Tipul de data pointer


Pointerul este o variabila de memorie in care se memoreaza o adresa de
memorie.
Un pointer se asociaza intotdeauna unui tip de data (int, char, float) numit tip
de baza.
Se spune ca un pointer indica o zona de memorie care contine o data care are
tipul de baza, iar operatiile se fac asupra datei respective.

2. Declararea variabilelor de tip pointer


Se poate face prin:
tip_data *nume_variabila; unde
tip_data = tipul datei stocate la adresa memorata in pointer (tipul de baza)
*= operatorul de referinta
nume_variabila = numele variabilei de tip pointer in care se memoreaza
adresa unei variabile de memorie care are tipul de baza
Exemplu:
char *p;  variabila de tip pointer catre tipul char
int *q;  variabila de tip pointer catre tipul int
float *r;  variabila de tip pointer catre tipul float
struct punct { int x,y;} ;
punct *t;  variabila de tip pointer catre tipul inregistrare.
Pointerul zero – are valoarea 0 si indica zona de memorie de la
adresa 0. Acest tip de pointer este folosit ca terminator in structurile de date
care sunt prelucrate cu ajutorul pointerilor.
3. Constante de tip adresa
Constanta de tip adresa este un pointer al carui continut nu poate fi
modificat.
Exemplu: constanta 0 (adresa nula) este utila in unele cazuri pentru
initializarea valorii unui pointer. In aces caz se foloseste constanta simbolica
predefinita NULL.
Observatie: la declararea unui tablou de memorie acestuia i se aloca o zona
de memorie de dimensiune fixa. Adresa de la care se aloca zona de memorie
este o constanta si ea este asociata cu numele tabloului de memorie. Numele
tabloului de memorie este folosit de compilator ca o constanta simbolica de
tip pointer catre tipul de baza dat de tipul elementelor tabloului. Ex: int v[5];
iar zona de memorie alocata unui vector v are dimensiunea:
n x sizeof (tip_de_baza)
4. Operatori pentru variabile de tip pointer
Operatorii specifici variabilelor de tip pointer sunt:
 Operatorul & - operatorul de adresare. Se aplica pe o variabila de
memorie sau un element de tablou de memorie si furnizeaza adresa
variabilei de memorie, respectiv a elementului de tablou. Rezultatul
obtinut prin aplicarea acestui tip de operator este de tip pointer.
Operatia se numeste referentierea unei variabile de memorie.
 Operatorul ^ - operatorul de redirectare. Se aplica pe o variabila de
tip pointer si furnizeaza valoarea variabilei de memorie care se gaseste
la adresa memorata in pointer. Rezultatul obtinut prin aplicarea acestui
tip de operator este de tipul datei asociate pointerului. Operatia se
numeste dereferentierea unui pointer.
 Operatorul  - operatorul de selectie indirecta a membrului unei
structuri, daca tipul indicat de pointer este tipul inregistrare, care
contine mai multe campuri.
Ex: nume_variabila_pointer  nume_camp;
Rezultatul furnizat este valoarea membrului selectat (al campului). Operatorul
are prioritate maxima si asociativitate de la stanga la dreapta.
Exemplu:
struct punct { int x,y;} ;
punct a= {3,4}, *p=&a;
cout <<a.x <<” ” <<a.y; //afiseaza 3 4
cout <<px <<” ” <<py; //afiseaza 3 4

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