Змінюючи значення змінної а (спочатку 5 а потім 10), її адреса не міняється (&a в обох випадках рівне 9005:0FFE)
Припустимо, що x і у мають тип int, а ip - вказівник на int. Наступні декілька рядків були придумано спеціально для того, щоб показати, яким чином оголошуються покажчики і як використовуються оператори & і *.
int х = 1, у = 2, z[10];
int *ip; /* ip - покажчик на int */
ip = &x; /* тепер ip указує на x */
у = *ip; /* у тепер рівний 1 */
*ip = 0; /* x тепер рівний 0 */
ip = &z[0]; /* ip тепер указує на z[0]*/
Програми на C++ зберігають змінні в пам'яті. Необхідно відразу усвідомити, що покажчик (вказівник) є ділянкою пам’яті, в якій зберігається адреса іншої ділянки пам'яті. Говорять, що вказівник вказує (або посилається) на певну ділянку пам’яті. Операції з покажчиками широко використовуються в C++.
Вказівники – це змінні, значенням яких є не саме дане, а деяка адреса іншої комірки пам’яті, де може зберігатися (чи зберігається) деяке дане. Змінна-вказівник описується як звичайна змінна з тією відмінністю, що перед іменем вказівника вказується *. Змінній-вказівнику можна надавати лише значень адрес (наприклад адрес інших змінних: b = &a .
Приклад
void main()
{
int a;
a = 5;
int *b; //a: 5 &a: 9004:0FFE b: 000B:8FCF
b = &a; //a: 5 &a: 9004:0FFE b: 9004:0FFE
}
Тут b – змінна-вказівник, a – звичайна (статична) змінна).
Після виконання оператор b = &a змінна b отримала значення адреси змінної а, тобто 9004:0FFE
Якщо змінна b вказівна, то змінита значення комірки пам'яті, на яку вказує ця змінна можна за допомогою вказівки присвоєння:
*b =<деяке значення>
b - вказівник
*b - вміст (значення) змінної на яку вказує вказівник