Ссылку можно рассматривать как псевдоним для существующего объекта; указатель содержит адрес памяти объекта.
| Характеристика | Ссылка | Указатель |
|---|---|---|
| Инициализация | Должна быть инициализирована при объявлении. | Может быть неинициализирован. |
| Переназначение | Не может быть переназначена после инициализации. | Может указывать на другой объект. |
| Нулевое значение | Не может быть null. | Может быть nullptr (C++11) или NULL (C/C++). |
| Индексация массива | Не поддерживает прямую арифметику указателей. | Поддерживает арифметику указателей. |
| Операторы | Используется напрямую (. для членов). | Использует * для разыменования, -> для членов. |
| Размер | Не имеет собственного размера, ссылается на размер объекта. | Имеет размер, соответствующий размеру адреса в системе (обычно 4 или 8 байт). |
| Выделение памяти | Не требует явного выделения/освобождения памяти. | Может требовать new/delete (в C++). |
| Использование | Часто как параметры функций для передачи по ссылке. | Для динамического выделения памяти, низкоуровневого доступа. |
c