Користуючись вказівником, ми можемо доступитися та змінити дані за адресою пам’яті, яку зберігає вказівник. Для цього використовують оператор *. Ця операція називається операцією розіменування вказівника. Наприклад:
// Оголошуємо змінну та виводимо її значенняint value =11;std::cout <<"Value: "<< value <<std::endl;// Оголошуємо вказівник на зміннуint*ptrToValue =&value;// Розіменовуємо вказівник та доступаємось до даних у пам'яті на які вказує ptrToValue// Як ми бачимо у консольному виводі - ми доступилися до даних змінної valuestd::cout <<"Value (by deref ptrToValue): "<<*ptrToValue <<std::endl;// Тепер розіменовуємо вказівник та змінюємо дані наякі він вказує// По суті - ми модифікували змінну value через вказівник!*ptrToValue =42;// Переконаємося, що дані зміненоstd::cout <<"Value (after modifiation): "<< value <<std::endl;
У консолі після запуску прикладу ми побачимо наступний вивід:
Як бачимо з прикладу, ми модифікували значення змінної через вказівник.
nullptr
На відміну від посилання, ми можемо також створити вказівник, який не вказує ні на що та присвоїти йому адресу пізніше. Для цього користуються спеціальним значенням, яке вказує на те що вказівник не містить коректної адреси - nullptr. Наприклад:
Тепер ми можемо перевірити вказівник на коректне значення
або просто
У останньому випадку відбувається неявне перетворення типу вказівника до bool (nullptr - false, будь яке інше значення - true).
Передача параметру за вказівником
Так само як і з посиланням, ми можемо передавати параметри функції уникаючи копіювання об’єкту. Цей спосіб передачі називають передачею параметру по вказівнику. Приклад:
В загальному завжди вартує перевіряти вказівник на те, чи він ініціалізований адресою (тобто не містить nullptr)