На данный вопрос уже ответили:
Чем отличаются ссылки от указателей в С++
2 ответа
В чем будет разница, если в функцию передать указатель и ссылку?
например
#include
и
#include
Программы выведут одно и то же?
Ведь и так, и так мы обращаемся к существующему элементу, а не создаем новый.
Ответ
В принципе, технически разница между указателем и ссылкой лишь в том, что саму ссылку нельзя изменить (а указатель можно). [Вот тут бóльший список отличий.] Кроме этого, разница ещё синтаксическая: с ссылкой вы обращаетесь как будто это переменная, а с указателем нужно его правильно получать/разыменовывать:
void func(int *a)
{
*a = 5;
}
int main()
{
int a;
func(&a);
cout << a;
}
Других технических отличий нет, и результат будет одинаковый.
Но разница на самом деле не в синтаксисе, а в смысле, в семантике.
Указатель может означать всё, что угодно. Он в C и C++ означает строку, ассив, адрес переменной, передачу переменной по ссылке и ещё кучу всяких вещей. А смысл ссылки ровно один — это как бы альтернативное имя (alias) существующей переменной.
Поэтому для случаев наподобие того, который вы описали, в C++ уместно использовать ссылку, а не указатель. Хотя, как вы сами видите, с указателем тоже прекрасно работает.
И ещё: в чистом C ссылок нет, так что у вас нет другого варианта кроме указателей.
Комментариев нет:
Отправить комментарий