请教一道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
展开
 我来答
tanarri
2011-07-28 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8154万
展开全部
因为在add函数里num是形参而非全局变量,add(n)实参为n
也就是说在add函数里num=n=5,再经过加1后输出为6,注意全局变量num没有被修改
因此add(n)执行后全局变量num的值仍为初始值0.
追问
请问参数和变量有什么不同
追答
在VB中,出现在Sub过程和Function过程的形参表中的变量名、数组名,称为形式参数
形参即函数的自变量,期初值来源于函数的调用。只有在程序执行过程中调用了函数,形参才有可能得到具体的值,并参与运算求得函数值。
可见形参表相当于变量说明,但应特别注意:此处只能使用类型标识符,而不能直接使用类型。

参考资料: http://baike.baidu.com/view/816500.htm

grazil
2011-07-28 · TA获得超过1042个赞
知道小有建树答主
回答量:994
采纳率:0%
帮助的人:860万
展开全部
sub add里的num是这个过程的形参,是局部变量,其初始值是实参n的值,等于5;加1后等于6,所以print出来为6;
在Command1_Click中,因为在过程中没有定义一个名为num的变量,所以这里的num是全局变量(在模块的开头定义),其初始值为0。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
瑞安阿芳
2011-07-28 · TA获得超过1947个赞
知道小有建树答主
回答量:749
采纳率:100%
帮助的人:899万
展开全部
在add过程中定义的参数num与全局变量num相同,那么在add过程中使用num变量就是指这个过程的私有变量(即参数num),而非全局变量num,因此调用add过程后,全局变量num的值并未改变。因为全局变量num开始就没赋值,所有第2个结果是0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式