Easyconstуказатели
Чем отличается const T* от T* const?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Читаем справа налево: *`const T** — указатель на константу (нельзя менять объект, можно перенаправить указатель). **T const`* — константный указатель (можно менять объект, нельзя перенаправить).
int x = 10, y = 20;
const int* a = &x; // const-данные
// *a = 5; // ОШИБКА: данные константны
a = &y; // OK: указатель можно перенаправить
int* const b = &x; // const-указатель
*b = 5; // OK: данные менять можно
// b = &y; // ОШИБКА: указатель константен
const int* const c = &x; // всё константноВ API void f(const T* p) обещает «не изменю объект».
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.