VB中ByVal與ByRef有什么區別
ByVal 與 ByRef(默認值)
這兩個是子過程的參數傳遞時,指定參數按什么傳遞的
ByVal(按值傳遞)
ByRef(按地址傳遞)
具體這樣來理解:
過程中的參數列表,我們稱形參
調用過程時的參數列表,我們稱實參
在調用時,我們要將實參的值傳遞給形參,這樣過程才能拿這些數據參與計算並實現一些功能
那么在傳遞的過程中,就存在這兩種傳遞方式
傳值時(ByVal),是先給形參開辟一個臨時地址,將實參的內容傳入這個臨時地址,這樣,傳遞后,形參與實參是在兩上不同的地址中,也就是說他們是相互獨立的
傳址時(ByRef),是直接將實參的地址傳遞給形參,這樣,形參與實參就共用一個地址,所以,形參內容的改變,也直接改變了實參的內容
通過上面的分析,你只要記得:
按值傳遞時(ByVal),形參的改變不會影響到實參
按址傳遞時(ByRef),形參的改變,會影響到實參
應用時,我們可以利用按址傳遞的過程,給一個子過程(Sub過程)進行參數返回
例:
Dim A as integer,B as integer
A=1
B=2
Call AAA(A,B)
Print A,B '得到的結果是2 3 (形參的改變影響到了實參)
Call BBB(A,B)
Pring A,B '得到的結果跟上面的一樣,2 3(形參的改變並沒有影響到這個實參)
Sub AAA(I as integer,J as integer) '默認,則按址傳遞
i=i+1
J=J+1
End Sub
Sub BBB(ByVal I as integer,ByVal J as integer)
i=i+1
J=J+1
End Sub
這兩個是子過程的參數傳遞時,指定參數按什么傳遞的
ByVal(按值傳遞)
ByRef(按地址傳遞)
具體這樣來理解:
過程中的參數列表,我們稱形參
調用過程時的參數列表,我們稱實參
在調用時,我們要將實參的值傳遞給形參,這樣過程才能拿這些數據參與計算並實現一些功能
那么在傳遞的過程中,就存在這兩種傳遞方式
傳值時(ByVal),是先給形參開辟一個臨時地址,將實參的內容傳入這個臨時地址,這樣,傳遞后,形參與實參是在兩上不同的地址中,也就是說他們是相互獨立的
傳址時(ByRef),是直接將實參的地址傳遞給形參,這樣,形參與實參就共用一個地址,所以,形參內容的改變,也直接改變了實參的內容
通過上面的分析,你只要記得:
按值傳遞時(ByVal),形參的改變不會影響到實參
按址傳遞時(ByRef),形參的改變,會影響到實參
應用時,我們可以利用按址傳遞的過程,給一個子過程(Sub過程)進行參數返回
例:
Dim A as integer,B as integer
A=1
B=2
Call AAA(A,B)
Print A,B '得到的結果是2 3 (形參的改變影響到了實參)
Call BBB(A,B)
Pring A,B '得到的結果跟上面的一樣,2 3(形參的改變並沒有影響到這個實參)
Sub AAA(I as integer,J as integer) '默認,則按址傳遞
i=i+1
J=J+1
End Sub
Sub BBB(ByVal I as integer,ByVal J as integer)
i=i+1
J=J+1
End Sub
