有下面程序代码: Private Sub Command1_Click() Dim a As Integer For k = 1 To 3 x = fun(A) Next k Print x, a End S

admin2018-12-20  14

问题 有下面程序代码:
Private Sub Command1_Click()
    Dim a As Integer
    For k = 1 To 3
        x = fun(A)
    Next k
    Print x, a
End Sub
Function fun(a As Integer) As Integer
    Static x As Integer
    Dim y
    x = x + 1
    y = y + 1
    a = y
    fun = x
End Function
运行Command1_Click过程时的输出是

选项 A、3     1
B、3     3
C、1     1
D、1     3

答案A

解析 如果形参前面没有关键字ByRef或ByVal,系统默认为按地址传递参数。形参对实参的值作更改会改变相应实参的值。Dim定义的变量称为"自动变量",当引用Dim定义变量时,变量值会被重新设置(数值变量重新设置为0,字符串变量被设置为空)。也就是说,下次再使用此变量,其值为初始值。而Static定义变量,每次引用该静态变量后,其值会继续保留,作为下一次引用时该变量的初始值。For循环变量i的取值从1到3。当i=1时,调用Fun(a)实参与形参默认按地址传递参数,静态整型变量第一次默认的初始值为0,x=0,x=x+1=1,y=y+1=1,a=1,Fun=1。当i=2,第二次调用Fun(a)时,因变量x为静态变量,下一次引用该变量的初始值是上一次处理后的最后取值,x=x+1=2,y=y+1=1,a=y=1,Fun=2;当i=3,第三次调用Fun(a)时,x=x+1=3,y=y+1=1,a=y=1,Fun=3最后将3返回给x,故最后打印的结果为x=3,a=1。本题正确答案为A。
转载请注明原文地址:https://kaotiyun.com/show/mwFp777K
0

最新回复(0)