Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Второй механизм передачи параметров — по ссылке — подразумевает возможность изменения подпрограммой данных вызывающего фрагмента программы. Для этого в качестве параметра вызывающий фрагмент должен использовать переменную, адрес которой будет передан в подпрограмму через стек (см. рис. 9). Далее подпрограмма обеспечивает доступ к переданному адресу по имени параметра. Соответственно, изменения, производимые с параметром в подпрограмме, влияют на ту переменную, которая указана в качестве параметра.
Рис. 9. Механизм передачи параметров по ссылке
Для указания компилятору на необходимость передачи параметра по ссылке перед описанием соответствующего параметра указывается специальный модификатор параметра — ключевое слово Var (от англ. Variable — переменный):
Procedure (..., Var <Параметр>: <Тип параметра>,...);
Так как при использовании параметров-переменных в подпрограмму должен быть передан некоторый адрес, то в качестве параметра, передаваемого по ссылке, должны использоваться только переменные. Изменим предыдущий пример таким образом, чтобы параметр передавался в процедуру по ссылке (см. листинг 2.21).
Листинг 2.21. Передача параметров по ссылке
Program ChangingParams2;
Var
B: Integer; {Описание целочисленной переменной}
Procedure Proc (Var A: Integer); {Описание процедуры Proc с одним
параметром, передаваемым по ссылке}
Begin
А:= 154; {Изменение значения параметра, переданного в
процедуру. Одновременно с этим изменяется значение
переменной, переданной в качестве параметра}
end;
Begin {Начало раздела описания логики программы}
B:= 200;, {Изменение значение переменной B}
Ргос(B); {Вызов процедуры Proc, в качестве параметра передается
адрес переменной B, после окончания работы
процедуры, значение переменной изменится и станет
равным 154}
End.
Параметры, передаваемые по ссылке, называют параметрами-переменными (от англ. Variable parameter — параметр-переменная).
Вопросы с ответами для повторения по разделу 2
Дата публикования: 2014-11-02; Прочитано: 328 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!