static变量中文名叫静态变量。它与普通的变量比起来有如下几个区别:
1)位置:静态局部变量被编译器放在全局存储区.data,所以它虽然是局部的,但是在程序的整个生命周期中存在。
2)访问权限:静态局部变量只能被其作用域内的变量或函数访问。也就是说虽然它会在程序的整个生命周期中存在,由于它是static的,它不能被其他的函数和源文件访问。
3)值:静态局部变量如果没有被用户初始化,则会被编译器自动赋值为0,以后每次调用静态局部变量的时候都用上次调用后的值。这个比较好理解,每次函数调用静态局部变量的时候都修改它然后离开,下次读的时候从全局存储区读出的静态局部变量就是上次修改后的值。
Static 声明的局部静态变量,最好不要直接赋值为一个常量如果那样,就与Dim声明的变量没什么区别了
应该用一个表达式或别的变量来赋值,比如
Private Sub Form_Click()
Static I as Long
I=I+1
Print I
End Sub
这样解释吧:
能赋初值,正因为是不释放空间,也就是说,当前结果对下一次要造成影响
既然是这样,如果你给它赋一个常量(也就是定值)那又与上一次的结果有什么关系呢? 那这个静态变量还有什么意义呢? 还不如用Dim来定义
所以,能赋初值,但是要赋一个变量或一个表达式,这样才有意义
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)