Обычные указатели и оператор взятия адреса
Объявляйте указатели, получайте адреса с помощью & и изучайте типы указателей.
«Обычные указатели и оператор взятия адреса» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Что такое указатель
pointer хранит адрес другого объекта. Это переменная, значением которой является адрес в памяти.
Объявление указателя
Тип pointer записывается как T*. По соглашению символ * размещают рядом с типом.
int x = 10;
int* p = &x; // p holds the address of x
std::cout << p; // prints an address
std::cout << *p; // prints 10Оператор взятия адреса
Унарный оператор & получает адрес переменной. Тип результата — T*.
int x = 42;
int* p = &x;Оператор разыменования
Унарный оператор * читает или изменяет объект, на который указывает указатель.
*p = 100;
std::cout << x; // 100 (x changed through p)Нулевые указатели
Если pointer никуда не указывает, ему следует присвоить nullptr. Разыменование такого указателя приводит к неопределённому поведению.
int* p = nullptr;
if (p == nullptr) {
std::cout << "no target\n";
}Указатели под капотом являются числами
Адрес — это просто целое число (часто 64-битное). Тип pointer сообщает компилятору, как интерпретировать байты по этому адресу.
Указатель на константу и константный указатель
Для const есть два независимых положения:
int x = 1, y = 2;
const int* p1 = &x; // pointer to const int (cannot modify *p1)
int* const p2 = &x; // const pointer to int (cannot reseat)
const int* const p3 = &x; // bothРазмер указателя
На одной платформе все указатели имеют одинаковый размер — обычно 8 байт в 64-разрядных системах. Даже char* имеет ширину 64 бита.
Указатели на функции
Можно получить адрес функции и вызвать её через указатель.
int square(int x) { return x * x; }
int (*fp)(int) = □
std::cout << fp(5); // 25Указатели на члены
Для указателей на члены класса существует специальный синтаксис. В современном коде он используется редко — в большинстве обратных вызовов применяются std::function или лямбды.
Зачем нужны указатели
Указатели лежат в основе:
- Динамической памяти (
new/deleteили умных указателей) - Необязательных ссылок (могут быть нулевыми)
- Полиморфизма (виртуального вызова через указатели на базовый класс)
- Взаимодействия с API языка C
Быстрая проверка
Какое значение принимает выражение &x?
Повторение
Указатель хранит адрес. Используйте &, чтобы получить адрес, и *, чтобы прочитать или изменить целевой объект. nullptr — безопасное нулевое значение. Указатели лежат в основе динамической памяти, необязательных ссылок и полиморфизма.
Часто задаваемые вопросы
Урок «Обычные указатели и оператор взятия адреса» бесплатный?
Да — полный текст урока «Обычные указатели и оператор взятия адреса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Обычные указатели и оператор взятия адреса»?
Объявляйте указатели, получайте адреса с помощью & и изучайте типы указателей. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Обычные указатели и оператор взятия адреса»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Обычные указатели и оператор взятия адреса
- Разыменование и арифметика указателей
- nullptr и безопасность нулевых указателей
- Когда использовать указатели, а когда ссылки