Параметры-переменные в Delphi XE

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


Procedure two(a,b,c: integer; var n: integer);
Begin
n:= a * b * c;
End;

Слово varдействует только в пределах одной группы переменных, то есть до ближайшей точки с запятой.

 

В заголовке процедуры формальному параметру nпредшествует слово var, значит это параметр-переменная. Такой способ передачи параметров называется передачей по ссылке. Для параметров-переменных локаль­ные переменные не создаются, а вместо значения фактического параметра передаётся адрес переменной, по которому она хранится в памяти. В этом случае в процедуре мы имеем дело именно с той переменной, которая ис­пользуется при вызове процедуры как фактический параметр, поэтому все изменения формальной переменной nотразятся и на фактическом пара­метре.

 

Напримерпосле вызова процедуры

Var res: integer; two(WIDTH, height, 2+3, res);

 

переменная n:= a * b * c; примет значение 1000. Но этот идентификатор n- всего лишь псевдоним переменной res, то есть это значение будет присво­ено именно переменной res. Итак, в данном случае nи res- одна и та же переменная, хотя в процедуре она и называется иначе (но вы можете назвать их и одинаково).

 

Этот способ передачи параметров обычно используется для передачи в процедуру переменных большого размера - записи, классы, массивы. Та­кой способ гораздо быстрее и экономичнее, поскольку не нужно выделять под переменные память и копировать туда их значения. В процедуру пе­редаются только их адреса, а это очень быстрая операция. Но, как говорит­ся, недостатки - это продолжение наших достоинств: можно случайно из­менить в процедуре значение переменной, а потом долго искать причину неверной работы программы.

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: