Ссылка (программирование)
- 1 year ago
- 0
- 0
Ссылка в программировании — это порядковый номера объекта в программе — переменной/константы, типа, процедуры/функции/метода и т. п.. Получение объекта по ссылке называется разыменованием .
Ссылка не является указателем , а является "паспортом" объекта. Главное отличие ссылки от указателей в том, что указатель это целое число и поэтому для него доступны операции с целыми числами, а для ссылки доступны только операции копирования и разыменования.
В языках высокого уровня ссылки используются при передаче объектов в подпрограмму и из подпрограммы. Ссылки бывают с именем и без, например, неименованные ссылки — лямбды в Питоне или замыкания в языке Го .
Ссылки в C++ должны быть связаны с каким-либо объектом. Таким образом, «нулевые ссылки» (не связанные с каким-либо объектом) в C++ отсутствуют. Разыменование ссылок в C++ не требует специального оператора. Таким образом, в C++ ссылки — форма передачи адреса в стек напрямую, минуя копирование и указатели. При компилировании все ссылки на объект и его именем заменяются одним номером этого объекта.
В следующем примере параметр x передаётся по значению, а result — по ссылке. Результат работы функции помещается в result:
#include <iostream>
using namespace std; // без этой записи нам бы пришлось дописывать "std::" к cout и endl
void square(int x, int &result)
{
result = x*x;
}
int main()
{
int y = 0; //Инициализация
square(3, y);
cout << "y=" << y << endl; //y=9
return 0;
}
В Java понятие указателя отсутствует, а в C# редко применяется, вместо него используется понятие ссылки. Разыменование ссылок и взятие адресов объектов для присваивания их ссылкам не требует специального оператора.
Ссылки в PHP — это средство доступа к содержимому одной переменной под разными именами. Они не похожи на указатели C и не являются псевдонимами таблицы символов. В PHP имя переменной и её содержимое — это разные вещи, поэтому одно содержимое может иметь разные имена. Ближайшая аналогия — имена файлов Unix и файлы — имена переменных являются элементами каталогов, а содержимое переменных это сами файлы. Ссылки в PHP — аналог жёстких ссылок (hardlinks) в файловых системах Unix.
<?php
$a = 'text';
$b =& $a;
print $b;
$a = 5;
print $b;
text 5
Ссылка ( англ. reference ) в Erlang является типом данных для уникального идентификатора, служащего только для выполнения сравнений и сопоставлений с образцом :
send_kv(N, K, V) ->
Reference = make_ref(), % создание ссылки
{server, N} ! {put, self(), Reference, K, V}, % отправить запрос, включающий ссылку
receive {reply, Reference, ok} -> ok % реакция на запрос
after 5000 -> {error, timeout} % или таймаут
end.