dim b as integer
Private Sub Command1_Click()
b = b + 1
Label1.Caption = b
End Sub
==================================================
Private Sub Command1_Click()
static b as integer
b = b + 1
Label1.Caption = b
End Sub两个效果是一样的, 即点一下加一, 是不是全局变量定义的值就是静态的?它的生存期有多长? 和静态变量一样吗?

解决方案 »

  1.   

    这个例子中dim定义的是一个模块级变量而不是全局变量,全局变量要在bas中用public来定义。全局变量一旦定义,在任何窗体和模块中都可以给其赋值或改变其值,它的生存周期就是这个程序的运行周期。
    dim也可用在过程内部,static只能用在过程内部,此时它们的区别是static定义的变量每次调用时都保留上次的值,而dim定义的过程级变量每次调用时都会重新赋给初始值。
    全局变量无法完全取代静态变量的作用。
      

  2.   

    dim b as integer
      放在任何过程函数外面和 private 一样的效果 static b as integer  在过程里面,但是是静态的,也就是说过程完毕后,变量的内存并没有被系统回收,而是保持最后一次的值
      

  3.   

    一样。
    唯一区别的就是一个是全局“可见”, 一个是只有你的那个函数里面才可见。但他们的生命期都是同进程同生死。
    他们是存放在 .data 段中的。 并且初始化为0。