Variabilele de tip pointer permit accesarea de zone de memorie cu continut numeric pentru gestionarea valorilor ce reprezinta adrese de memorie. Dimensiunea unei variabile pointer depinde de arhitectura procesorului.
In limbajul de programare C++, sablonul de definire a unei variabile pointer este:
TipData *Den_VarPointer;
Exemple:
int *pi;//pointer la tipul int char **ppc;//pointer la tipul char* (pointer \ la pointer de tipul char) float *pv[20]//vector de 20 elemente de tipul float* \ (vector de 20 de pointeri la tipul float)
Initializarea unei variabile pointer se realizeaza prin urmatoarele metode:
- Atribuirea unei adrese de memorie existente;
int i=1, *pi; pi=&i;
- Preluarea unei adrese de memorie heap in urma apelului de functii standard/operator de alocare
int *pi; pi=(int*)malloc(sizeof(int));//alocare memorie heap \ prin functie standard; se rezerva in heap spatiu pentru \ un element de tipul int
sau
int *pi; pi=new int;//alocare memorie heap prin operator; \ se rezerva in heap spatiu pentru un element de tipul int
Utilizarea unei variabile pointer presupune aplicarea operatorul * pentru extragerea continutului de la adresa stocata in variabila pointer.
Exemplu pentru accesarea continutului de la adresa stocata intr-o variabila pointer:
int i=1, *pi; pi=&i;//stocarea adresei de memorie a variabilei i \ in variabila pointer pi; *pi=2;//modificarea continutului de la adresa de memorie din \ pi; efect: variabila i acceseaza zona \ de memorie cu valoarea 2
Pentru o variabila pointer, valoarea 0 reprezinta valoarea nula. O variabila pointer ce contine valoarea 0 specifica faptul ca nu stocheaza o adresa de memorie.
Atunci cand o zona de memorie heap nu mai este utila aplicatiei, aceasta se dezaloca prin functia standard free sau operatorul delete.