分类: 未分类

关于byval

为什么一个结果是0,一个是10?
第一段:

Private Sub Form_Click()
    Dim a As Integer
    For i = 1 To 10
        Call abcd(a)
    Next i
    Print a
End Sub

Sub abcd(ByVal x)
    x = x + 1
End Sub

第二段:


Private Sub Form_Click()
    Dim a As Integer
    For i = 1 To 10
        Call abcd(a)
    Next i
    Print a
End Sub

Sub abcd(x)
    x = x + 1
End Sub

byval是把内存数值的拷贝给程序,所以改变的只是拷贝,内存原来的值是不会改变的。
第一个a的值并没有变化。