Visual Basic 6. Руководство разработчика


Параметры API-функций - часть 2


Передача параметров по ссылке

При передаче параметров по ссылке процедуре предоставляется доступ к пере­менной в вызывающей программе. Процедура, параметр которой передается таким образом, получает адрес области памяти, хранящей значение параметра. Это дает ей возможность изменять значение параметра. В Visual Basic такой механизм передачи значений параметров устанавливается по умолчанию. В следующем примере процедура AnySub() изменяет значение параметра.

Программа 13.2. Передача параметров по ссылке

Sub AnySub(mylnt As Integer)

mylnt

= 20      ' теперь переменная mylnt имеет значение 20

End

Sub

Если теперь вызвать эту процедуру,

Dim x

As Integer

{Требуемые операторы}

х

= 4

Debug.Print "Before calling AnySub x = " &

x

' (Перед вызовом AnySub x

=...)

Call AnySub(x)

Debug.Print "After calling AnySub x = " & x

' (После вызова AnySub x

=...)

то в окне Debug появятся следующие строки:

{Перед вызовом AnySub х = 4

После вызова AnySub х = 20

Изменение значения переменной х процедурой AnySub() носит глобальный характер, поскольку значение параметра передавалось по ссылке. Если нет оснований разрешать вызываемой процедуре глобальное изменение значений параметров, то параметры необходимо передавать по значению. Некоторые API-функции сохраняют результаты работы, изменяя значения переданных им параметров, поэтому предполагается, что параметр такой функции должен переда­ваться по ссылке. В языке С такие параметры называются указателями (pointers), так как они указывают на область памяти, в которой хранится значение переменной.




Начало  Назад  Вперед



Книжный магазин