Параметры-константы

Формат:

(const t1, t2,.., tn: <тип>); или

(const t1: <тип>; const t2: <тип>;.. const tn: <тип>);

где t1, t2, tn – параметры-константы.

Например, (const t1: real; const t2, t3: integer);

Пример 8.1. Procedure MyProc(var a: Real; b: integer; const c: char);

Здесь, a – параметр-переменная, b – параметр-значение, c – параметр-константа.

Параметры-процедуры и параметры-функции. Это параметры, которые сами являются процедурами или функциями.

Между формальными и фактическими параметрами должны быть следующие соответствия:

1. количество параметров;

2. порядок следования входных и выходных параметров;

3. тип данных.

Для того чтобы понять, в каких случаях использовать тот или иной тип параметров, рассмотрим, как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме.

Если параметр определён как параметр-значение, то перед вызовом подпрограммы это значение вычисляется, полученный результат копируется во временную память и передаётся подпрограмме. Даже если в качестве фактического параметра указано простейшее выражение в виде переменной или константы, всё равно подпрограмме будет передана лишь копия переменной (константы). Любые возможности изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра.

Если параметр определён как параметр-переменная, то при вызове подпрограммы передаётся сама переменная, а не её копия (фактически в этом случае подпрограмме передаётся адрес переменной). Изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе.

В случае параметра-константы в подпрограмму также передаётся адрес области памяти, в которой располагается переменная или вычисленное значение. Однако компилятор блокирует любые присваивания параметру-константе нового значения в теле подпрограммы.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: