Re: [問題] 傳回值的設定

看板Visual_Basic作者 (小獅)時間19年前 (2005/03/26 09:19), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
看不太懂你說的問題... 用個範例來說明函數傳值的方法 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
文章代碼(AID): #12HBYuYY (Visual_Basic)
文章代碼(AID): #12HBYuYY (Visual_Basic)