static语句
在窗体上画一个名称为Command1的命令按钮,并编写如下
程序:
Private Sub Command1_Click()
Dim x As Integer
Static y As Integer
x=10
y=5
Call f1(x,y)
Print x,y
End Sub
Private Sub f1(ByRef x1 As Integer, y1 As Integer)
x1=x1+2
y1=y1+2
End Sub
程序运行后,单击命令按钮,在窗体上显示的内容是
A、10 5
B、12 5
C、10 7
D、12 7
本题考的是Static函数和函数调用中参数的传递。
Static语句:在过程级别中使用,用于声明变量并分配存
储空间。在整个代码运行期间都能保留使用Static语句声
明的变量的值。
函数调用中有两种参数传递方式:地址传递(ByRef,默认
)和值传递(ByVal),按地址传递,参数的值可以返回,
而按值传递参数的值不返回。
本题中函数f1的参数都是按地址传递的,所以x和y的值都
会返回,即x=x+2=10+2=12,y=y+2=5+2=7。
所以本题的答案是D。
请问这里的“本题中函数f1的参数都是按地址传递的”是不是因为用static声明x,使其也变成按地址传递呢?谢谢!
参考答案:是的。
static变量直接修改。要保存。
而一般的动态变量在退出函数后就释放了。
参考资料: