Declararea pointerilor

Știm că diferitele tipuri de date sunt caracterizate printr-o dimensiune, respectiv printr-o formă de reprezentare. Pentru a ști ce dimensiune a memoriei trebuie accesată și în ce format să fie redate datele, prin operatorul de dereferențiere, este necesară declararea variabilelor pointer  cu indicarea tipului lor de bază, după forma generală: tip_bază * identificator_pointer; Putem, spre exemplificare, scrie următoarele declarări: int *pint; float *pfloat; char *pchar; Fiecare dintre variabilele declarate indică spre valori din tipuri diferite, deși fiecare dintre ele este pointer și ocupă în memorie aceeași dimensiune (spre exemplu, în implementarea folosită de CodeBlocks, ei ocupă 4 octeți, indiferent de tipul de bază). Trebuie menționat că asterixul folosit la declararea acestui tip de variabile nu are, în acest caz,  semnificația de operator de dereferențiere.

Să analizăm următorul exemplu: int a= 5, b= 15; int * pa, * pb; pa = &a; // p1 primeste adresa variabilei a pb = &b; // p2 primeste adresa variabilei b *pa = 10;// valoarea indicată de pa devine 10 *pb = *pa;// valoarea indicată de pb primește valoarea indicată de pa pa = pb; //este copiată valoarea variabileo pb peste valoarea variabilei pa *pa = 20; // valoarea indicată de pa devine 10 cout << "a= " << a<< endl; cout << "b= " << b<<endl; Să comentăm, îndeaproape, liniile de cod din exemplu. Evident, sunt declarate și inițializate variabilele a și b. Apoi, sunt declarate variabilele pointer pa și pb, care primesc, ulterior valoarea adreselor variabilelor a, respectiv b. În linia a 5-a, ca urmare a atribuirii *pa=10, variabila a va primi, indirect, prin acționarea asupra pointerului legat de ea, pa, valoarea 10. În linia următoare, tot prin intermediul pointerului, variabila b, de care este legată variabila pb, primește valoarea 10, ca urmare a atribuirii *pb=*pa.

Mai departe, variabila pa primește valoarea reținută de pb, fiind practic, suprascrisă. Cum valoarea reținută de pb este adresa variabilei b, pa devine, de asemenea, pointer la b. Prin sintaxa următoare, *pa=20, se modifică conținutul variabilei b, indirect, prin pointerul pa.

Astfel, la afișare, valoarea lui a va fi 10, iar valoarea lui b, 20.