Способы передачи параметров в подпрограмму через заголовок

Связь между головной программой (то есть программой, которая обращается к другой подпрограмме) и подпрограммой (процедурой или функцией) осуществляется через список параметров, указанный в заголовке. Если внутри подпрограммы не требуется изменять значение параметра, то в подпрограмму из головной программы передаётся копия этого параметра. Такой способ передачи параметра называется передачей по значению. В примерах предыдущего пункта передача параметров осуществляется как раз по значению.

Если необходимо изменить значение переданного параметра внутри подпрограммы, то в заголовке перед именем параметра или списком параметров ставится служебное слово Var. Такой способ передачи переменных называется передачей по ссылке. В этом случае в подпрограмму передаётся адрес переменной, что позволяет использовать переменную внутри подпрограммы и при необходимости изменять её значение, которое становится её новым значением как внутри подпрограммы, так и в головной программе.

Необходимо уяснить следующее:

- на месте фактического параметра, в случае передаче его по ссылке, в строке вызова подпрограммы может быть записана только переменная, запись константы или выражения приведет к ошибке;

- переданный по ссылке фактический параметр, изменившись в подпрограмме, вернется измененным в головную программу.

Пример:

procedure GetDate(var Year, Month, Day, DayOfWeek: Word);

 

В процедуре GetDate параметры Year, Month, Day, DayOfWeek передаются по ссылке, так как эти переменные вычисляются внутри процедуры и являются результатом ее работы. При вызове данной процедуры фактическими параметрами могут быть только переменные. В обратном случае вызов процедуры приведет к ошибке.