Урок #9 - Указатели и ссылки

Урок #9 - Указатели и ссылки

В этом уроке мы с вами изучим указатели, а также ссылки в языке C++. Благодаря указателям, а также ссылкам мы можем достаточно хорошо оптимизировать код.

Видеоурок

Каждая переменная (int x = 1;) хранит данные в определенной ячейке в памяти компьютера. Каждый раз, создавая новую переменную, мы создаем новую ячейку в памяти, с новым значением в ней. Чем больше ячеек, тем больше компьютерной памяти будет занято.

Адрес в памяти компьютера это число, к которому мы можем получить доступ. Указатель, в свою очередь - это тот же адрес в памяти, по которому мы получаем ту же самую переменную и, в итоге, то же самое значение.

Чтобы работать с указателями необходимо воспользоваться двумя специальными символами: & и *. Символ * используется для получения адреса переменной, например:
int t = 237; // Простая переменная
int *p; // Создание указателя,
        // который принимает лишь адрес другой переменной
p = &t; // Устанавливаем адрес нашей первой переменной
Из примера выше, переменные t и p будут равны 237, при этом обе переменные используют лишь одну ячейку памяти, что сокращает общий объем используемой памяти.

Ссылки в C++

Ссылки и указатели схожи между собой, так как оба в качестве значения имеют лишь адрес некого объекта.

Указатель хранит адрес ячейки и если мы захотим изменить значение этой ячейки, то нам придется выполнить операцию "разыменования":
float some = 391; // Простая переменная
float *u = &some; // Указатель на переменную
*u = 98; // Изменение значения переменной
В ссылках такого понятия нет, так как меняя ссылку вы автоматически меняете саму переменную. Ссылки напрямую ссылаются к переменной, поэтому их синтаксис проще.
char symbol = 'A'; // Простая переменная
char &ref = symbol; // Создание ссылки на переменную
// Поскольку мы ссылаемся на переменную, то можем её использовать
// как отдельно взятую переменную
cout << ref << endl; // Вывод символа "А"
ref = 'C'; // Изменение на символ "C"

Использование ссылок и указателей оправдано, если вы передаете данные в функции или же в различные объекты. Они отлично подойдут для передачи большого объема данных. Используя их, вы лишь передаете адрес объекта, а не объект целиком, что значительно сокращает код.

Исходный код

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

Онлайн редактор кода

Загрузка...

Задание к уроку

Немного теории
В двух словах расскажите отличия между ссылками и указателями в языке C++.
Посмотреть ответ
Указатели содержат адрес переменной и более ничего. Чтобы изменить переменную необходимо выполнить операцию разыменования.

Ссылки также содержат адрес переменной или же объекта, но они напрямую ссылаются к нему. Таким образом записывать их немного проще, а чтобы добраться до значения переменной необходимо просто прописать саму ссылку, её название.

Получить остальные домашние задания можно после подписки на проект

Большое задание по курсу

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

Также стоит посмотреть

Изучение C++ от новичка до профи
Уроки Qt Creator | Графический интерфейс на С++
13 уроков
Создание игры на C++ / Создание "Змейки"
3 урока