二级考试一道传值变化题

来源:百度知道 编辑:UC知道 时间:2024/06/01 05:36:37
(23)在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如下程序代码:
Private X As Integer
Private Y as Integer
Private Sub Command1_Click()
X = 5: Y = 3
Call proc(X, Y)
Label1.Caption = X
Label2.Caption = Y
End Sub
Private Sub proc(ByVal a As Integer, ByVal b As Integer)
X = a * a
Y = b + b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是
A)5和3 B)25和3 C)25和6 D)5和6
(23)在窗体上画一个名称为Command1的命令按钮,再画两个名称分别为Label1、Label2的标签,然后编写如下程序代码:
Private Sub Command1_Click()
Private X As Integer
Private Y as Integer
X = 5: Y = 3
Call proc(X, Y)
Label1.Caption = X
Label2.Caption = Y
End Sub
Private Sub proc(ByVal a As Integer, ByVal b As Integer)
X = a * a
Y = b + b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是
A)5和3 B)25和3 C)25和6 D)5和6
同样的题目,就只因为Private X As Integer ,Private Y as Integer位置的不同,所得的值不同,这是为什么呀?

因为上面一个的X&Y是全局定义的变量。
就是整个程序代码都知道X&Y。
但是下面这个程序。X&Y是在COMMAND1里面定义的。只有在COMMAND1里面是能识别的。
举例说明:
第一个代码里面。如果在每个事件也添加
Private X As Integer
Private Y as Integer
那么就会提示出错。多重定义了X&Y
第二个代码里面。如果在每个事件也添加
Private X As Integer
Private Y as Integer
则不会提示。因为每个事件对应的是自己的X&Y。
这个是局部&全局的关系

就只因为Private X As Integer ,Private Y as Integer位置的不同

这就是变量的作用范围问题,你在 Command1_Click里面定义的x,y在 Command1_Click之外就没用,也就是说proc里面的x,y跟Command1_Click里面定义的x,y没有关系

如果你定义的是模块级变量,那么在本模块(这里就是窗体了)内是有效的,