Ссылка (программирование)


Ссылка в программировании — это порядковый номера объекта в программе — переменной/константы, типа, процедуры/функции/метода и т. п.. Получение объекта по ссылке называется разыменованием.

Ссылка не является указателем, а является "паспортом" объекта. Главное отличие ссылки от указателей в том, что указатель это целое число и поэтому для него доступны операции с целыми числами, а для ссылки доступны только операции копирования и разыменования.

В языках высокого уровня ссылки используются при передаче объектов в подпрограмму и из подпрограммы. Ссылки бывают с именем и без, например, неименованные ссылки — лямбды в Python.

Ссылки в C++ должны быть связаны с каким-либо объектом. Таким образом, «нулевые ссылки» (не связанные с каким-либо объектом) в C++ отсутствуют. Разыменование ссылок в C++ не требует специального оператора. Таким образом, в C++ ссылки — форма передачи адреса в стек напрямую, минуя копирование и указатели. При компилировании все ссылки на объект и его именем заменяются одним номером этого объекта.

В следующем примере параметр x передаётся по значению, а result — по ссылке. Результат работы функции помещается в result:

В Java понятие указателя отсутствует, а в C# редко применяется, вместо него используется понятие ссылки. Разыменование ссылок и взятие адресов объектов для присваивания их ссылкам не требует специального оператора.