标题:过程的调用
只看楼主
easonzgf
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-12-4
结帖率:75%
已结贴  问题点数:15 回复次数:3 
过程的调用
  Private Sub Command1_Click()
  Dim k As Integer, m As Integer
  Dim p As Integer
  k=4: m=1
  p=PC(k, m) : Print p;
  p=PC(k, m) : Print p
  End Sub
  Private Function PC(a As Integer, b As Integer)
  Static m As Integer, i As Integer
  m=0: i=2
  i=i + m + 1
  m=i + a + b
  PC=m
  End Function



sub inc(a as integer)
    static x as integer
      x=x+a
      print a;
end sub
private sub command1_click
    inc 2
    inc 3
    inc 4
为什么第一个程序function调用第一次是p=8,第二次结果还是8???
而在第二个程序调用sub过程中结果却是 2,5,9????

[ 本帖最后由 easonzgf 于 2014-12-11 13:11 编辑 ]
搜索更多相关主题的帖子: private 
2014-12-11 13:07
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:1 
静态变量这东东还是少用的好

DO IT YOURSELF !
2014-12-11 13:19
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:14 
  Private Function PC(a As Integer, b As Integer)
  Static m As Integer, i As Integer
  m=0: i=2                      '在这里,重新初始化了。
  i=i + m + 1                  'i=3
  m=i + a + b                   'm= i+a+b
  PC=m                           '返回 m
  End Function

  k=4: m=1
  p=PC(k, m) : Print p;
  p=PC(k, m) : Print p

你 k ,m 是不变,所以 结果也就不变。

----------------------------------
    inc 2
    inc 3
    inc 4

sub inc(a as integer)
    static x as integer           '没有重新初始化,第一次为0 以后继续使用上一次的值
      x=x+a                   '第一次 2 ,第二次 2+3 = 5 ,第三次,5+4 = 9
      print a;
end sub

授人于鱼,不如授人于渔
早已停用QQ了
2014-12-11 16:33
easonzgf
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2014-12-4
得分:0 
回复 3楼 风吹过b
thank you very much!!!
2014-12-11 18:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-439837-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.282851 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved