设有如下通用过程:
Public Sub Fun(a(), ByVal x As Integer)
For i = 1 To 5
x = x + a(i)
Next
End Sub
在窗体上画一个名称为Text1的文本框和一个名称为Command1的命令按钮,然后编写如下的事件过程:
Private Sub Command1_Click()
Dim arr(5) As Variant
For i = 1 To 5
arr(i) = i
Next
n = 10
Call Fun(arr(), n)
Text1.Text = n
End Sub
程序运行后,单击命令按钮,则在文本框中显示的内容是
A)10 B)15 C)25 D)24n初值是10,但Call fun()后,n的值为什么还是10?

解决方案 »

  1.   

    Ai,n都没有定义,严格来说,题目出得有问题。
      

  2.   

    改为这个就变了
    Public Sub Fun(a(), x As Integer)
    For i = 1 To 5
    x = x + a(i)
    Next
    End SubPrivate Sub Command1_Click()
    Dim n As Integer
    Dim arr(5) As Variant
    For i = 1 To 5
    arr(i) = i
    Next
    n = 10
    Call Fun(arr(), n)
    Text1.Text = n
    End Sub
      

  3.   

    ByVal的缘故,看看帮助,有详解
      

  4.   

    Call Fun(arr(), n)中n的值是多少?
      

  5.   

    选AByVal是值传递(对于Integer这样的的简单类型,就是是在函数调用时直接将变量的数据压到堆栈,没有其他多余的操作)
      

  6.   

    Call Fun(arr(), n)中n的值是多少?
      

  7.   

    Call Fun(arr(), n)中n的值在不断的变化,但因为参数传递的方式为byval,即传值,所以fun(arr(),n)中对n值的变化不会影响到主程序里n的值,如果像haohaohappy那样的话,就是默认的参数传递方式,即byref,好象c语言里也分这两中情况吧。