在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如
下程序代码:
Private X As Integer
Private Sub Command1_Click()
X=8: Y=4
Call proc(X,Y)
Label1.Caption=X
Label2.Caption=Y
End Sub
Private Sub proc(a As Integer, ByVal b As Integer)
X=a+a
Y=b*b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是______。
A) 8和4
B) 8和16
C) 16和4
D) 16和16
参考答案:C
解析: ByVal为传值,当把函数外的一个变量传给参数时,如n传给ByVal,在函数体内对该参数所做的任何变更,不会影响函数体外的这个变量n的值。而ByRef为传址,即把函数体外变量n的地址传给ByRef函数的参数,在函数内对该参数所做的变更就会体现在函数体外部的这个变量n上。在本题中,在自定义函数proc中,定义b为ByVal,默认a为ByRef,在该函数中运算结果为X=16,Y=16。这里Y的值并不能改变主函数中的Y值,所以运算后,X=16,Y的值仍保持不变。