Modificarea pointerilor

Pointerii pot fi redirecționați spre altă adresă după declarare — aceasta îi diferențiează de referințe.

int a = 10, b = 20;
int* ptr = &a;
cout << *ptr << endl;  // 10

ptr = &b;              // redirecționare!
cout << *ptr << endl;  // 20

*ptr = 99;             // modifică b
cout << b << endl;     // 99

Aritmetica pointerilor

int v[] = {10, 20, 30, 40, 50};
int* ptr = v;  // pointer la primul element

cout << *ptr     << endl;  // 10
cout << *(ptr+1) << endl;  // 20
cout << *(ptr+2) << endl;  // 30

ptr++;          // avansează la elementul următor
cout << *ptr << endl;  // 20
Aritmetica pointerilor ține cont de tipul de date: ptr+1 avansează cu sizeof(tip) octeți, nu cu 1 octet.