作者fumizuki (小獅)
看板Visual_Basic
標題Re: [問題] 傳回值的設定
時間Sat Mar 26 09:36:53 2005
看不太懂你說的問題...
用個範例來說明函數傳值的方法
Sub Form_Activate()
Dim a As Integer, x As Integer, y As Integer
x = 1
y = 2
a = ByValue(x, y)
Print "ByValue:"
Print "x = "; x
Print "y = "; y
Print "a = "; a
Print
a = ByReference(x, y)
Print "ByReference:"
Print "x = "; x
Print "y = "; y
Print "a = "; a
Print
End Sub
Function ByValue(ByVal x As Integer, ByVal y As Integer) As Integer
ByValue = x + y
x = x + 1
y = y * 2
End Function
Function ByReference(x As Integer, y As Integer) As Integer
ByReference = x + y
x = x + 1
y = y * 2
End Function
輸出結果:
ByValue:
x = 1
y = 2
a = 3
ByReference:
x = 2
y = 4
a = 3
使用 ByVal 方法,是傳遞變數的值進去,
呼叫者(Main)與被呼叫者(ByValue)中的 x 及 y 變數使用的是不同的記憶體位址,
所以不管函數內怎麼改變其值,離開函數後,x 和 y 變數的值還是原來的值。
使用 ByRef 方法(預設),是傳遞變數的位址進去,
呼叫者與被呼叫者中的變數是共用記憶體位址,
所以只要函數內的值有改變,呼叫者(Main)的值也會跟著改變。
使用 ByRef 方法,引數型態必須一致,否則就無法通過編譯。
--
人若無星爺,跟條鹹魚有何分別?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.58.156.43