Автор Вадим Булах задал вопрос в разделе Другие языки и технологии
Объясните мне указатели и ссылки в С++. Для чего они нужны? и получил лучший ответ
Ответ от Николай Веселуха[гуру]
Ссылка - накладная на товар. Передать накладную в бухгалтерию легче, чем притащить туда для освидетельствования 100500 тонн орехов, указанных в этой накладной, тем более что там их есть не собираются, а только распределят по складам да магазинам для реализации.
Накладная - ссылка.
Бухгалтерия - функция.
Орехи - объект.
При передаче в функцию (метод класса) объекта по значению, создаётся копия этого объекта. Это требует времени и ресурсов памяти. К тому же изменить можно только передаваемую копию, оригинал останется неизменным.
А вот если передать по ссылке или указателю, то функция (метод класса) работают непосредственно с самим объектом.
Указатель отличается от ссылки тем, что указатель это адрес в памяти, который при желании можно изменить, то есть взять адрес другого объекта, а ссылка намертво привязана к своему объекту. Ну как козла не назови, он вонять не перестанет.
Дойдёшь до конструктора копирования, поймёшь зачем нужны ссылки.
Чтобы объяснить все возможности указателей, 4000 знаков не хватит!
Важно.
К указателям применимы две операции, операция взятия адреса & и разыменование указателя *, обе - унарные. Первая & получает адрес объекта, который указывает на его первый байт в памяти, вторая * позволяет получить значение объекта, которое храниться в памяти по этому адресу.
Ссылки обязательно должны быть проинициализированы при их объявлении, и нельзя переопределить ссылку на другой объект.