Лекция: Передача параметров по значению
При передаче по значению параметр рассматривается как локальная переменная, значение которой устанавливается при вызове подпрограммы, может быть использовано и изменено подпрограммой, но не может повлиять на вызывающий фрагмент. В качестве параметра может указываться переменная или константа, подходящая параметру по типу.
При передаче параметра по значению значение параметра, заданное при вызове подпрограммы, заносится в стек (см. рис. 8). Затем подпрограмма выделяет собственную память для локальной переменной, переносит в нее значение параметра, переданное через стек, и обеспечивает доступ к этой локальной переменной через имя параметра. После завершения подпрограммы измененное значение параметра теряется и никак не влияет на данные вызывающего фрагмента. Рассмотрим пример, в котором подпрограмма изменяет значение параметра, переданного ей по значению (см. листинг 2.20).
Рис. 8. Механизм передачи параметров по значению
Листинг 2.20. Передача параметров по значению
Program ChangingParams1;
Var
I: Integer; {Описание целочисленной переменной}
Procedure Proc (A: Integer); {Описание процедуры Proc с одним
параметром, передаваемым по значению}
Begin
А := 154; {Изменение значения параметра, переданного в процедуру.
Никаких изменений данных вызывающего фрагмента не
происходит}
end;
Begin {Начало раздела описания логики программы}
I := 200; {Изменение значение переменной I}
Proc (I); {Вызов процедуры Proc, в качестве параметра передается
Значение переменной I, после окончания работы
процедуры значение переменной сохраняется}
Proc(80); {Вызов процедуры Proc, в качестве параметра
передается целочисленная константа 80, что допустимо
при передаче параметров по значению}
End.