回覆列表
  • 1 # 何以笙丶丶

    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

  • 中秋節和大豐收的關聯?
  • 把醋放在溫水還是涼水中洗臉?