请教一道vb有关变量作用域的题目
DimnumAsIntegerPrivateSubCommand1_Click()DimnAsIntegern=5Calladd(n)PrintnumEndSubPriv...
Dim num As Integer
Private Sub Command1_Click()
Dim n As Integer
n = 5
Call add(n)
Print num
End Sub
Private Sub add(ByVal num)
num = num + 1
Print num
End Sub
其输出结果为
6
0
为什么第二个结果是0而不是6 展开
Private Sub Command1_Click()
Dim n As Integer
n = 5
Call add(n)
Print num
End Sub
Private Sub add(ByVal num)
num = num + 1
Print num
End Sub
其输出结果为
6
0
为什么第二个结果是0而不是6 展开
3个回答
展开全部
因为在add函数里num是形参而非全局变量,add(n)实参为n
也就是说在add函数里num=n=5,再经过加1后输出为6,注意全局变量num没有被修改
因此add(n)执行后全局变量num的值仍为初始值0.
也就是说在add函数里num=n=5,再经过加1后输出为6,注意全局变量num没有被修改
因此add(n)执行后全局变量num的值仍为初始值0.
追问
请问参数和变量有什么不同
追答
在VB中,出现在Sub过程和Function过程的形参表中的变量名、数组名,称为形式参数
形参即函数的自变量,期初值来源于函数的调用。只有在程序执行过程中调用了函数,形参才有可能得到具体的值,并参与运算求得函数值。
可见形参表相当于变量说明,但应特别注意:此处只能使用类型标识符,而不能直接使用类型。
展开全部
sub add里的num是这个过程的形参,是局部变量,其初始值是实参n的值,等于5;加1后等于6,所以print出来为6;
在Command1_Click中,因为在过程中没有定义一个名为num的变量,所以这里的num是全局变量(在模块的开头定义),其初始值为0。
在Command1_Click中,因为在过程中没有定义一个名为num的变量,所以这里的num是全局变量(在模块的开头定义),其初始值为0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在add过程中定义的参数num与全局变量num相同,那么在add过程中使用num变量就是指这个过程的私有变量(即参数num),而非全局变量num,因此调用add过程后,全局变量num的值并未改变。因为全局变量num开始就没赋值,所有第2个结果是0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询