На данный вопрос уже ответили:
Чем отличаются ссылки от указателей в С++
2 ответа
#include
void display_ptr(int *ptrint) {
cout << *ptrint << endl;
}
void display_addr(int &toint) {
cout << toint << endl;
}
int main()
{
int i{ 10 };
display_ptr(&i);
display_addr(i);
}
В данном примере для меня непонятны возможности конструкции с указателем, по сравнению с передачей значения по ссылке.
Как видно, чтобы использовать значение по указателю, нужно достать его с помощью *, а еще передать в аргумент с помощью &
Используя передачу по ссылке, ничего не нужно кроме указания в самом параметре, при этом значение также не копируется и его также можно изменять по ссылке.
Не совсем понимаю какой профит у указателей, если намного удобней передавать значение по ссылке.
Ответ
Если с инглишем хорошо, то милости просим на англоязычный стэковерфлов. Если в двух словах:
Ссылку нельзя перенацелить
Нельзя создать ссылку на ссылку
Указатель можно обнулить
Указатели поддерживают адресную арифметику(+, -, ++, --)
Указатель нужно разыменовывать
Указатель является переменной, которая содержит адрес памяти. Вне зависимости от того, как реализуется ссылка, ссылка имеет тот же адрес памяти что и элемент на который она ссылается.
Ссылки нельзя поместить в массив
Можно создавать константные ссылки на временные объекты
Комментариев нет:
Отправить комментарий