Pointeri și constante

Cum am văzut, pointerii pot fi folosiți pentru a accesa variabile prin adresele lor, mecanism care permite și modificarea conținutului acestora. Este posibil, însă, să accesăm prin intermediul lor și constante. Faptul este util mai ales când transmitem adrese ca parametri, pentru a bloca modificarea acestora.

Pentru a declara pointeri ce nu pot modifica valorile aflate la adresele indicate folosim sintaxa: const tip *pointer=adresă; Putem, în acest sens, să construim un exemplu: int a, b=10; const int *pb=&b; În acest context, poiterul pa reține adresa variabilei b, care conține valoarea 10. Este posibil să folosim pointerul în construcții de tipul: a=*pb;, dar nu și pentru a modifica valoarea din zona de memorie indicată, ca în construcția:

*p=20; După cum spuneam, acest tip de pointeri este util în situația în care transmitem adrese ca parametri. Exemplul următor ilustrează o astfel de situație. using namespace std; void mareste(int* start, int* stop, int c)   { int * idx= start; while (idx != stop) {       *idx+=c; idx++;    // increment pointer }   } void afiseaza (const int* start, const int* stop) {   const int * idx= start; while (idx != stop) {  cout << *idx << '\n'; ++idx; } int main {   int v[] = {10,20,30}; mareste (v,v+3, 10); afiseaza (v,v+3); return 0; }
 * 1) include