
#12 – Указатели и ссылки. Практический пример
Видеоурок
Каждая переменная или объект хранит данные в определенной ячейке в памяти компьютера. Каждый раз, создавая новую переменную, мы создаем новую ячейку в памяти, с новым значением для неё. Чем больше ячеек, тем больше компьютерной памяти будет занято.
Ссылки в 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 месяца
Также стоит посмотреть