C的函数中的static变量初始值一定要是常量?

C的函数中的static变量初始值一定要是常量?,第1张

是的,static变量初始值一定要是常量。

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来定义

所以,能赋初值,但是要赋一个变量或一个表达式,这样才有意义


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12083571.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存