К содержимому
Разобраться → Понять → Сделать
Меню

← Все статьи

Указатели в C++: как перестать бояться

Указатель — это переменная, в которой хранится не значение, а адрес другой переменной. Как записка с адресом дома: вы не держите в руках сам дом, но знаете, где его найти. Два знака, которые стоит запомнить: & значит «возьми адрес», а * значит «пройди по адресу и посмотри, что там лежит».

int x = 5;
int* p = &x;   // p хранит адрес x
*p = 10;       // идём по адресу и меняем значение
// теперь x равен 10

Ссылка — это просто второе имя для той же переменной. Она всегда указывает на что-то одно, не бывает пустой и не переключается на другой объект. Указатель свободнее: его можно перенаправить на другую переменную или обнулить (nullptr). Но за свободу приходится платить аккуратностью.

Две самые частые ошибки: разыменовать пустой указатель (программа падает) и обратиться к памяти, которую уже освободили. В современном C++ для этого есть «умные» указатели, например std::unique_ptr, которые освобождают память сами. А понимать обычные указатели всё равно нужно: на них держится всё остальное.

Если указатели всё ещё кажутся магией, напишите мне: нарисуем схему памяти на вашем коде.