vb问题求解~~~知道的进来看下~~

来源:百度知道 编辑:UC知道 时间:2024/07/04 11:03:45
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
程序运行后,单击命令按钮,则在文本框中显示的内容是
如何理解

文本框显示的内容是 10

这题目里面的fun过程是迷惑人的,没啥用处,因为 n 是局部变量,把n传递给fun过程是按"值"传递,就是说过程中对 "x"(n的副本)的改变,不影响 n 值,n值不会变,还是10

首先,这段代码有问题
Command1_Click中的For i = 1 To 5
应改是0 To 4,
除非你在文件头写了Option Base 1;

而且调用Fun时,传入的只是n的副本而不是n本身,Fun也只改变了n的副本。
正确的方法是
Public Sub Fun(a() As Variant, ByRef n As Integer)