Easyуказатели
Что такое арифметика указателей и какие правила?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Арифметика указателей — p + n сдвигает на n элементов (sizeof(T)*n байт), p - q даёт расстояние в элементах. Действительна только в пределах одного массива.
int arr[5] = {10, 20, 30, 40, 50};
int* p = arr;
*(p + 2); // 30 (эквивалент arr[2])
p[2]; // 30 — arr[i] == *(arr + i)
int* end = arr + 5; // one past-the-end — валидно для сравнения
ptrdiff_t d = end - arr; // 5Выход за границы массива или арифметика между разными объектами — UB. Для не-массивных указателей и указателей на функции некорректна.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.