Реферат: Распределение памяти
и запоминается во временной переменпой, и адрес этой переменной
передается в списке параметров. Такая переменная называется
фиктивным аргументом.
Вызов по имени
Согласно сообщению о языке АЛГОЛ, использование вызова
параметра по имени означает буквальную замену имени формального
параметра фактическим параметром.
Получить эффективную реализацию с помощью такой текстовой
замены, конечно, нельзя, и мы должны разработать соответствующий
эквивалентный способ.
Обычный способ реализации вызова параметров по имени
состоит в том, чтобы иметь отдельную программу или процедуру в
объектном коде для каждого такого параметра. Для такой программы
был введен термин "санк" ( thunk ). Когда происходит вызов санка,
он вычисляет значение фактического параметра ( если этот параметр
не переменная ) и передает адрес этого значения. В теле процедуры
при каждой ссылке на формальный параметр происходит вызов санка,
после чего для обращения к нужному значению используется
переданный санком адрес.
Различие между вызовом по ссылке и вызовом по имени
заключается в следующем: адрес фактического параметра,
вызываемого по ссылке, вычисляется только один раз, перед
фактическим входом в процедуру, в то время как для вызова по
имени адрес вычисляется всякий раз, когда в теле процедуры есть
обращение к формальному параметру.
Имя массива в качестве фактического параметра
В этом случае и фактический, и формальный параметр должны
быть массивами. Процедуре передается адрес первого элемента
массива ( для языков, которые не требуют информационных