VB 过程调用 问题

Subproc(a()AsInteger)StaticiAsIntegerDoa(i)=a(i)+a(i+1)i=i+1Loopwhilei<2EndsubPrivate... Sub proc(a() As Integer)
Static i As Integer
Do
a(i)=a(i)+a(i+1)
i=i+1
Loop while i<2
End sub

Private Sub Form_click()
Dim m,i,x(10) As Integer
For i=0 To 4:x(i)=i+1:Next i
For i=1 To 2:call proc(x):Next i
For i=o To 4:Print x(i):Next i
End sub
最后结果是3 5 7 4 5
我不知道两个过程里的i是怎么回事 是对应的吗 本人新手 麻烦解答!!详解!
展开
 我来答
百度网友bd8556e
2012-06-25 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:29.6万
展开全部
两个过程里的i应该说没关系,只是变量名相同而已。不过Dim声明的只在模块内有效,Static声明的模块结束后依然保留。所以:
For i=1 To 2:call proc(x):Next i
这一句只执行i=1,调用sub后,x数组前三位变为3,5,7. i=2,因为在proc中的i是static声明的,所以i=2保留到主程序中,于是此句中就不再循环。
枫林T8Q
2012-06-25 · 超过22用户采纳过TA的回答
知道答主
回答量:41
采纳率:100%
帮助的人:36.8万
展开全部
应该注意到两个过程中对i的定义方式是不一样的,第一个是用的static。第二个是用dim。了解一下两种定义方式的不同。
static语句声明的变量,与dim语句声明的变量的主要区别是:前者只能在sub或function过程中使用,在退出sub或function过程后变量的值保留;后者使用在sub或function过程中时,退出sub或function过程后变量的值不保留
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yiyiarrow
2012-06-25 · TA获得超过391个赞
知道小有建树答主
回答量:588
采纳率:0%
帮助的人:427万
展开全部
就是传递的参数。。。
追问
上面的I和下面的I是一样吗
追答
把i传进去了 就会执行Sub proc(a() As Integer 里面的 操作 调用完之后 i 的值就变了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式