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 <<px <<” ” <<py; //afiseaza 3 4