ewertНе помню точно, где как кличут. Есть смутное детское воспоминание, что именно "по имени" кликали ещё в Фортране. А в Паскале -- ну, может, уже и "по ссылке".
Нет, я имел в виду как раз то, что в Pascal'е и Fortran'е они именуются "по имени", а во всех языках, так или иначе произошедших от C - "по ссылке".
Если константа обычная, то её пересылать по ссылке бессмысленно, да и запрещено -- ведь передача по ссылке подразумевает возможность изменения изнутри процедуры, что для константы низзя.
Передача по ссылке предназначена прежде всего не для возможности изменения данных изнутри подпрограммы, а для минимизации данных, пропускаемых через стек (при ее вызове). Для изменения достаточно передать указатель на переменную в качестве параметра подпрограммы - такое и в Pascal'е будет работать. Просто в Pascal'е, в дополнение к такому (естественному) механизму ввели (на уровне языка) префиксы формальных параметров var и const, которые очень сходны со ссылками ...&... (и const...&..., соответственно) в C++. Эти высокоуровневые механизмы замещают явную передачу адреса в качестве параметра.
Дабы не лжесвидетельствовать, я еще перед предыдущим постом не поленился откопать у себя на компьютере старинный компилятор Pascal'я и набрать вот такую программку:
Код:
Procedure proc
(
const d : Real
);
begin
write(d:6);
end;
begin
proc(3.14);
readln;
end.
...которая успешно откомпилировалась и запустилась.
Если же она типизированная, то фактически -- она просто переменная, только инициализируемая.
Разумеется, но не о них речь.