Введение в информатику. Хамухин А.А. - 94 стр.

UptoLike

Составители: 

93
3.9.5. Передача данных по ссылке и по значению
Передача аргументов из одной программы в другую осуществляется двумя
способами по ссылке (by reference) и по значению (by value). В первом случае
передается сама переменная, поэтому ее значение в подпрограмме можно изменить.
Во втором случае только значение переменной, а не она сама, и изменить ее в
вызванной подпрограмме нельзя
Выбор способа передачи осуществляется ключевыми словами ByRef и ByVal,
которые в круглых скобках указываются в описании вызываемой подпрограммы.
При отсутствии в описании аргументов ключевых слов ByRef и ByVal передача
осуществляется по ссылке.
В подпрограмме Рro24 переменная UsN передается в подпрограмму
ChangeName по ссылке.
Sub Pro24()
Dim UsN As String
UsN = “Vova”
ChangeName UsN
MsgBox UsN
End Sub
Sub ChangeName(ByRef UsN)
UsN = “Buba”
End Sub
В первой строке подпрограммы ChangeName в круглых скобках набраны
ключевое слово ByRef и имя переменной UsN, указывая, что аргумент UsN будет
передан в подпрограмму по ссылке. Это означает, что в подпрограмме используется
сама переданная в нее переменная. В частности, в ChangeName переменной UsN
присваивается новое значение Buba, которое затем возвращается в Рro24 и
выводится на экран.
При передаче аргумента по значению сама передаваемая переменная в
подпрограмму не попадает. Поэтому изменения, внесенные в нее в вызванной
программе, не скажутся на ее значении в вызвавшей программе. Передача по
значению аналогична передаче по ссылке, только в этом случае используется
ключевое слово ByVal.
Sub Pro25()
Dim UsN As String
UsN = “Vova”
ChangeName3 UsN
MsgBox “Yet remains as " & UsN & " in the original proc."
End Sub
Sub ChangeName3(ByVal UsN)
MsgBox "The original name is " & UsN & "."
UsN = "Buba"