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

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

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

В языках программирования ссылка может быть реализована как переменная, содержащая адрес ячейки памяти. В некоторых языках высокого уровня также имеется возможность использовать ссылки на объекты при передаче объектов в подпрограмму и из подпрограммы.

Примеры реализаций ссылок

C++

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

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

#include <iostream>using namespace std; // без этой записи нам бы пришлось дописывать "std::" к cout и endlvoid square(int x, int &result){result = x*x;}int main(){int y = 0;//Инициализацияsquare(3, y);cout << "y=" << y << endl;//y=9return 0;}

Java и C#

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

PHP

Ссылки в PHP — это средство доступа к содержимому одной переменной под разными именами. Они не похожи на указатели C и не являются псевдонимами таблицы символов. В PHP имя переменной и её содержимое — это разные вещи, поэтому одно содержимое может иметь разные имена. Ближайшая аналогия — имена файлов Unix и файлы — имена переменных являются элементами каталогов, а содержимое переменных это сами файлы. Ссылки в PHP — аналог жёстких ссылок (hardlinks) в файловых системах Unix.

<?php$a = 'text';$b =& $a;print $b;$a = 5;print $b;
 text 5

Erlang

Ссылка (англ. reference) в Erlang является типом данных для уникального идентификатора, служащего только для выполнения сравнений и сопоставлений с образцом[1]:

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.

См. также

Примечания

🔥 Top keywords: Заглавная страницаЯндексДуров, Павел ВалерьевичСлужебная:ПоискYouTubeЛунин, Андрей АлексеевичПодносова, Ирина ЛеонидовнаВКонтактеФоллаут (телесериал)WildberriesTelegramРеал Мадрид (футбольный клуб)Богуславская, Зоя БорисовнаДуров, Валерий СемёновичРоссияXVideosСписок умерших в 2024 годуЧикатило, Андрей РомановичFallout (серия игр)Список игроков НХЛ, забросивших 500 и более шайбПопков, Михаил ВикторовичOzon17 апреляИльин, Иван АлександровичMail.ruСёгун (мини-сериал, 2024)Слово пацана. Кровь на асфальтеПутин, Владимир ВладимировичЛига чемпионов УЕФАГагарина, Елена ЮрьевнаБишимбаев, Куандык ВалихановичЛига чемпионов УЕФА 2023/2024Турнир претендентов по шахматам 2024Манчестер СитиMGM-140 ATACMSРоссийский миротворческий контингент в Нагорном КарабахеЗагоризонтный радиолокаторПинапВодительское удостоверение в Российской Федерации