Задать вопрос
EnDeRJaY
@EnDeRJaY
cout >> "Hello World!" >> endl;

В чём разница указателей и ссылок?

Я вот не понимаю.В чём разница указателей и ссылок?Вроде оба выполняют одну вещь.Вроде обоих можно запульнуть в динамическую память.В чём их разница?Может что-то производительней?Я лишь вижу отличие в том что у ссылки читабельней синтаксис.
  • Вопрос задан
  • 1940 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
Ссылка это аналог константного указателя, который кидает исключение при попытке инициализировать его нулем.
Ответ написан
Комментировать
DmitryITWorksMakarov
@DmitryITWorksMakarov
В том и разница. В синтаксисе.
С указателями еще можно всякой адресной арифметикой заниматься.

Мне как программирующем на C# с ссылками работать удобнее, чем разбирать зубодробительный синтаксис с указателями: лучше маленькие такие точечки, а не вот это вот все (*->&)
Ответ написан
Комментировать
@alex-t
Прогр. в команде rco.ru
По сути - там и там адрес. Но ссылка указывает на уже существующий объект, а указатель может быть нулем, что иногда удобно. Указатель легче сделать невалидным, указывающим "в мусор", ссылку несколько сложнее, но и она не защищена от этого.

Кстати, построить ссылку сразу на динамическую память нельзя, сперва придется создать такой объект по указателю.

На мой взгляд, в случаях, когда нет специального значения нулевого указателя, можно использовать ссылки.
Ответ написан
Комментировать
dio4
@dio4
team leader, system engineer, master of sports
ссылки придумали в с++ для тех, кто не смог разобраться с указателями, изучая (или не изучая совсем) язык программирования С ;-)
тут полнее изложено УКАЗАТЕЛЬ НА ССЫЛКУ
Ответ написан
Комментировать
@asd111
Разница прежде всего в применении.
Так входящие параметры для функции принято передавать по константной ссылке, а исходящие параметры принято возвращать в виде указателя.
Примерно так:
void Foo(const string &in, string *out);
Указатель в виде входящего параметра может использоваться в случае если надо иногда передать в функцию null.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы