Easyссылкиуказатели

Что такое ссылка (reference) и чем она отличается от указателя?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Ссылка — альтернативное имя для уже существующего объекта. В отличие от указателя: должна быть инициализирована при объявлении, не бывает «нулевой ссылки», не может быть перепривязана, не требует разыменования.

int x = 10;
int& r = x;        // ссылка на x
r = 20;            // изменили x, а не перепривязали r

int* p = &x;       // указатель
p = nullptr;       // OK — указатель может быть null
// int& bad;       // ОШИБКА: ссылка должна быть инициализирована
  • Нет арифметики ссылок;
  • Используется для передачи параметров без копирования (const T&) и возврата из функций;
  • lvalue-ссылка (T&) и rvalue-ссылка (T&&) — разные типы.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.