5.1. Модификаторы VAR и CONST в описании формальных параметров
Если не указывать никаких модификаторов, то при передаче фактических параметров в процедуру или функцию создается временная копия значения фактического параметра, которая используется в процедуре или функции и удаляется после выхода. При использовании модификатора VAR в качестве формального параметра передается переменная (точнее ссылка на переменную). Значение переменной, переданной по ссылке, можно изменить внутри процедуры или функции. При этом изменится и значение переменной, указанной в качестве параметра.
Пример
PROCEDURE VectorSum(x1,y1,x2,y2:Real;VAR x,y:Real);
BEGIN
x:=x1+x2;
y:=y1+y2;
END;
VAR x,y:Real;
∙ ∙ ∙
VectorSum(3,7,5,10,x,y);
Результат выполнения
x=8, y=17
Таким образом, можно использовать этот способ передачи параметров, например для возврата процедурой или функцией, если это необходимо, сразу нескольких значений. Заметьте, что в этом случае значения может возвращать и процедура. Существуют случаи, когда передавать переменные по ссылке, а не по значению обязательно. Часто этот модификатор применяется для переменных составных типов (например, строк и массивов).
Модификатор CONST применяется в основном для переменных составных типов в случае, когда значение параметра внутри процедуры или функции изменять не требуется. В этом случае не создается временная копия значений параметров, а, как и при использовании модификатора VAR, переменные передаются по ссылке, что сокращает время на создание копии больших составных переменных. Передавать значения по ссылке допускается, так как можно быть уверенным, что, как и при обычной передаче параметров, значение переменных не изменится. Если попытаться изменить значение параметра, описанного с модификатором CONST, будет выдано сообщение об ошибке.