Признаком параметра-переменной является ключевое слово var перед описанием параметра:
var имя: тип;
Например, передача в процедуру Р параметра-переменной целого типа записывается так: procedure Р (var х: integer);
При вызове подпрограммы в область параметров копируется не значение переменной, а ее адрес, и подпрограмма через него имеет доступ к ячейке, в которой хранится переменная. Этот способ передачи параметров называется передачей по адресу. Подпрограмма работает непосредственно с переменной из вызывающей программы и, следовательно, может ее изменить.
ВНИМАНИЕ При вызове подпрограммы на месте параметра-переменной может находиться только ссылка на переменную точно того же типа.
Проиллюстрируем передачу параметров-значений и параметров-переменных на примере, var а, Ь, с, d, е: word; procedure X (a, b, с: word; var d: word);
var e: word; begin.
c:= a + b; d:= c; e:= c; writeln ('Подпрограмма:'); writeln ('c = ', c,'d = ', d, ' e = ', e); end; begin.
a:= 3; b:= 5; x (a, b, c, d);
writeln ('Главная программа:'); writeln ('c = ', c,'d = ', d, ' e = ', e); end.
Результаты работы этой программы приведены ниже. Подпрограмма: c = 8d = 8e = 8.
Главная программа: c = 0d = 8e = 0.
Значение переменной с в главной программе не изменилось, поскольку переменная передавалась по значению, а значение переменной е не изменилось, потому что в подпрограмме была описана локальная переменная с тем же именем.