@famousman204

В чем разница между * и &?

Скажите пожалуйста, в чем разница между этими двумя объявлениями:
Test *a;
Test &b;

Я как человек изучавший си не понимаю… для меня это все выглядит как указатель… но говорят что разница есть.
Я как понял что первое переменная хранит указатель, а вторая хранит адрес(но это разве не тот же указатель??)
Если есть разница, то для чего используется объявление адреса переменной?
  • Вопрос задан
  • 491 просмотр
Решения вопроса 1
zagayevskiy
@zagayevskiy
Android developer at Yandex
Указатель это есть адрес, он и хранится в переменной.
& Это ссылка. Как бы алиас на то место, куда ссылается. Разница есть.
Ссылку нельзя изменить, изменить можно только значение в памяти, куда ссылается ссылка. Саму ссылку поменять нельзя. Указатель можно менять. Константный указатель нельзя поменять.
Ссылка не может быть неинициализированна, указатель может быть.
Указатель может указывать на память в куче, которая должна быть освобождена, ссылку никогда не нужно освобождать отдельно.
Плюс ещё бывают r-value ссылки(кажется, так называются) &&. В них нельзя присваивать, только читать.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы