Вариации объявлений указателей с const‑квалификатором

Первые две формы — указатель на const int; третья — неизменяемый указатель на изменяемый int; четвёртая запрещает и переназначение указателя, и изменение значения через него.

Короткий ответ

Что ответить на собеседовании

Первые две формы — указатель на const int; третья — неизменяемый указатель на изменяемый int; четвёртая запрещает и переназначение указателя, и изменение значения через него.

Подробный разбор

Ответ с пояснениями

Условие

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

int value = 1000;

const int* cont_int_ptr        = &value;
int const* int_const_ptr_1     = &value;
int* const int_const_ptr_2     = &value;
const int* const const_int_const = &value;

Ответ

Первые две формы — указатель на const int; третья — неизменяемый указатель на изменяемый int; четвёртая запрещает и переназначение указателя, и изменение значения через него.

В const int* и int const* запись через *ptr запрещена, но ptr можно направить на другой объект. В int* const адрес менять нельзя, зато *ptr = 42 допустимо. В const int* const запрещены оба действия.

Сам value объявлен изменяемым. Поэтому даже при наличии указателя на const его можно изменить напрямую или через другой допустимый указатель: const здесь ограничивает конкретный путь доступа, а не превращает объект навсегда в неизменяемый.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее