问题
单项选择题
在窗体上画一个命令按钮(名称为Command1),并编写下列代码:
Function Funl(ByVal a As Integer,b As Integer)As Integer
Dim t As Integer
t=a-b
b=t+a
Funl=t+b
End Function Private Sub Command1_Click()
Dim X As Integer
x=10
Print Funl(Funl(X,(Funl(x,x-1))),x-1)
End Sub
程序运行后.单击命令按钮,输出结果是( )
A.10
B.0
C.11
D.21
答案
参考答案:B
解析: 在Visual Basic中,参数通过两种方式传送,即传地址和传值。其中,传地址习惯上称为引用,当通过引用来传送实参时,可以改变传送给过程的变量值;传值就是把需要传送的变量复制到一个临时的单元中,然后把该临时单元的地址传送给被调用的通用过程,它不会改变原来变量的值,所有的变化都是在变量的副本上进行的。
本题自定义函数Fun1的第1个参数按值传递,第2个参数虽然按址传递,但调用该函数时,第2个参数均为表达式,因此变量x的值不受调用函数的影响。第1次调用Fun1函数时,Fun1(10,9)=12;第2次调用Fun1函数时,Fun1(10,12)=6;第3次调用Fun1函数时,Fun1(6,9)=0。