问题 单项选择题

窗体中有命令按钮Command1,事件过程如下。
Public Function f(x As Integer)As Integer
Dim y As Integer
x=20
y=2
f=x*y
End Function
Private Sub Command1_Click()
Dim y As Integer
Static x As Integer
x=10
y=5
y=f(x)
DebugPrint x;y
End Sub
运行程序,单击命令按钮,则立即窗口中显示的内容是( )。

A) 10 5
B) 10 40
C) 20 5
D) 20 40

答案

参考答案:D

解析: 通常把由Dim定义的变量称为自动变量,Static定义的变量称为静态变量。两者的不同之处是,如果用Static定义了一个变量,则每次引用该变量时,其值会继续保留,而当引用Dim定义的变量时,变量值会被重新设置。
在过程定义时,如果未做参数说明,则默认为传址调用,传址调用是将相应位置实参的地址传送给形参处理,而被调用过程内部对形参的任何操作引起的形参值的变化又会反向影响实参的值。在这个过程中,数据的传递具有双向性,故称为“传址调用”的“双向”作用形式。
在Command1_Click()事件中,定义y为自动变量,定义x为静态变量,然后执行y=f(x)语句,此时x的值是10,调用f函数,即f(10)。在f()函数中,定义y为自动变量,x=20,y=2,f=x*y=20*2=40,此时x的值为20,所以程序运行结果是:20 40。所以本题答案为D)。

问答题
判断题