В отличие от параметров - значений параметры – переменных позволяют изменять значения передаваемых в подпрограммы фактических параметров находящихся при вызове подпрограмм на месте параметров – значений. Такой способ передачи параметров называется – передача по ссылке (по адресу), при этом в подпрограмму передаются не значения аргументы, а его адрес. При вызове подпрограммы для параметров переменной не отводится память в стеке как для параметров – значений,
а подпрограммы получают возможность работать с тем местом памяти, где постоянно храниться значение переменных являющейся фактическим параметром, то есть параметр – значения работают с мнимым значением фактических параметров, а параметры - переменных работают с реальным значением фактических параметров. На местах параметров переменных при вызове подпрограмм должны указываться идентификаторы переменных, тогда как на местах параметры значений возможно ставить как значения, так и переменные. Параметры значения используются в основном как входные параметры подпрограмм, а параметры переменные могут использоваться как входные и как выходные параметры подпрограмм.
Примеры показывающие практические особенности подпрограмм.
Var
A1,b1,k:bayte;
Procedure p (p_a,p_b:byte; var p_k:byte);
Begin
P_a:=p_a+p_b;
P_b:=p_a+3;
P_k:=p_b+p_a;
End;
Begin
A1:=10;
B1:=10; (a)
K1:=10;
P(a1,b1,k); (б)
End. (в)