Уроки C++

#12 – Вказівники та посилання. Практичний приклад

#12 – Вказівники та посилання. Практичний приклад

У C++ дуже багато уваги приділено роботі з пам'яттю. Для ефективної роботи з нею часто використовуються вказівники та посилання. За урок ви навчитеся працювати з ними, дізнаєтесь, навіщо вони потрібні та де вони застосовуються.

Відеоурок

Telegram group

Підписуйтесь на нашу групу в Телеграмі 🇺🇦

Кожна змінна або об'єкт зберігає дані в певній комірці пам'яті комп'ютера. Кожного разу, створюючи нову змінну, ми створюємо нову комірку в пам'яті з новим значенням для неї. Чим більше комірок, тим більше комп'ютерної пам'яті буде зайнято.


Посилання в C++

Посилання і вказівники схожі між собою, оскільки обидва мають як значення лише адресу якогось об'єкта.


Вказівник зберігає адресу комірки, і якщо ми захочемо змінити значення цієї комірки, то нам доведеться виконати операцію «розіменування»:

float some = 391; // Проста змінна
float *u = &some; // Вказівник на змінну
*u = 98; // Зміна значення змінної

У посиланнях такого поняття немає, оскільки змінюючи посилання ви автоматично змінюєте і змінну. Посилання безпосередньо посилаються на змінну, тому їх синтаксис простіший:

char symbol = 'A'; // Проста змінна
char &ref = symbol; // Створення посилання на змінну
// Оскільки ми посилаємося на змінну, то можемо її використовувати
// як окремо взяту змінну
cout << ref << endl; // Виведення символу "А"
ref = 'C'; // Зміна на символ "C"


Вказівники

Адреса в пам'яті комп'ютера це число, до якого ми можемо отримати доступ. Вказівник - це та ж адреса в пам'яті, за якою ми отримуємо змінну і в результаті її значення.


Щоб працювати з вказівниками необхідно скористатися двома спеціальними символами: & і *. Приклад використання:

int t = 237; // Проста змінна
int *p; // Створення вказівника, який приймає лише адресу іншої змінної
p = &t; // Встановлюємо адресу нашої першої змінної

Змінні t і p будуть рівні числу 237, оскільки обидва посилаються на одну комірку. Сам же комп'ютер на обчисленні обох змінних витратить менше зусиль, адже обидві змінні посилаються на одну й ту ж саму.


Використання посилань і вказівників виправдано у випадку передачі даних у функції або ж в об'єкти. Також ці технології чудово підійдуть для передачі великого обсягу даних в ході програми.

Вихідний код

Весь код буде доступний після підписки на проект!

Завдання до уроку

Трохи теорії

У двох словах розкажіть відмінності між посиланнями та вказівниками в мові C++.

Подивитися відповідь

Вказівники містять адресу змінної і більше нічого. Щоб змінити змінну, необхідно виконати операцію розіменування.


Посилання також містять адресу змінної або ж об'єкта, але вони безпосередньо посилаються на нього. Таким чином, записувати їх трохи простіше, а щоб дістатися до значення змінної, необхідно просто прописати саму посилання, її назву.

Отримати інші домашні завдання можна після підписки на проект

Велике завдання за курсом

Вам необхідно оформити передплату на сайті, щоб мати доступ до всіх великих завдань. У завдання входить методика рішення, а також готовий проект з відповіддю до завдання.
PS: подібні завдання доступні при підписці від 1 місяця

Також варто подивитися

Уроки Qt Creator | Графический интерфейс на С++
Уроки C++ WinForms / Создание программ на Windows
Игра с дизайном на C++ / Создание C++ WinForms игры
Вивчення C++ від новачка до профі
Создание игры на C++ / Создание "Змейки"
Основы программирования
Коментарі
Додати коментар

Поки що коментарів немає