0Pricing
C++ Academy · Урок

Обычные указатели и оператор взятия адреса

Объявляйте указатели, получайте адреса с помощью & и изучайте типы указателей.

«Обычные указатели и оператор взятия адреса» — бесплатный урок 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) = &square;
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 — локальная установка не требуется.

Все уроки этого курса

  1. Обычные указатели и оператор взятия адреса
  2. Разыменование и арифметика указателей
  3. nullptr и безопасность нулевых указателей
  4. Когда использовать указатели, а когда ссылки
← Назад к C++ Academy