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)
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