Отправляет email-рассылки с помощью сервиса Sendsay

Delphi. Уроки

  Все выпуски  

Delphi. Уроки


Информационный Канал Subscribe.Ru

Delphi. Object Pascal. Уроки с сайта http://progs.biz

Рассылка №33

Delphi. Object Pascal. Урок 14. Передача параметров по значению и по ссылке.

Полные версии уроков (с картинками) можно найти по адресам:
Урок 14. Передача параметров по значению и по ссылке.

В. Фаронов. Система программирования Delphi.
В. Фаронов. Система программирования Delphi
Заказать на Озоне

Подробнее

Рассылки сайта progs.biz через subscribe.ru
Уроки по C++ Builder
Уроки по программированию на C++ Builder. Библиотека VCL, создание собственных компонентов, работа с базами данных, примеры, FAQ. Уроки разбиты на серии. Каждая серия независима от других.

Delphi. Pascal. Урок 14. Передача параметров по значению и по ссылке

Параметры в процедуры и функции можно передавать 2 способами - по значению и по ссылке. Отличия между этими двумя способами следующие - при передаче параметра по значению в процедуру (функцию) передается копия переменной, а при передаче по ссылке - оригинал (сама переменная). Рассмотрим эти 2 способа более подробно.

При передаче параметра по значению изменение этого параметра внутри вызываемой процедуры (функции) никак не отразится на ней. Вот поясняющий пример:

...
//Объявление процедуры.
procedure proc(X: Integer);
begin
    //Изменяем X.
    X:=1;
end;
var
  r: Integer;
begin
  r:=25;
  //Вызов процедуры.
  proc(r);
  //Выведется 25
  Writeln(r);
  Readln;
end.

Как вы видите, переменная r свое значение не изменила.

При передаче же по ссылке изменение параметра внутри процедуры (функции) влечет за собой изменение и самой передваемой переменной. Вот пример:

...
//Объявление процедуры.
procedure proc(var X: Integer);
begin
    //Изменяем X.
    X:=1;
end;
var
  r: Integer;
begin
  r:=25;
  //Вызов процедуры.
  proc(r);
  //Выведется 1
  Writeln(r);
  Readln;
end.

Как вы видите, тут переменная k изменила свое значение. Обратите внимание, что для передачи переменной по ссылке мы пишем ключевое слово var:

...
procedure proc(var X: Integer);
    ...
Наверх

Copyright Алексеев Игорь, 2002-2003
Copyright Шмидт Отто, 2002-2003
Copyright сайт progs.biz, 2002-2003
Распространение материалов без разрешения владельцев авторских прав запрещено.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное