您的位置:首页 > 其它

静态变量static学习

2016-04-02 12:20 302 查看
工作时曾经遇到过这样的情况,代码中变量在运行前调试时是有值的,运行后变量值变为0,后来给变量前加了static之后,变量值才不会改变。

现在分析一下原因:

本人是在c#的类中声明的变量(以为在函数外部声明的就是全局变量,其实C#中是没有全局变量的概念,但可以通过static来模拟全局变量),该变量属于局部变量,随着函数的调用结束后会释放。通过给变量加static关键字,则改变了变量的生存期,即在函数调用与结束时值是保持不变的。现在简单学习一下静态变量。

static变量含义

静态变量,类型说明符static。

静态局部变量:

1. 函数内部的局部变量加static之后作用域并没有改变,还是在该函数内部。不同之处是普通局部变量会随着调用结束而被释放,而添加static后,无论变量是否被调用,都会一直存在。

2. 函数体内如果在定义的静态变量时进行初始化,则以后程序不再进行初始化操作,即静态变量的初始化语句只在第一次调用执行。

3. 静态局部变量的初始化必须是常量或者常量表达式。及时局部变量未赋初值,系统会自动赋值为0,而对于自动变量赋值则是不确定的。

静态全局变量:

全局变量的说明之前加static则够成静态全局变量。全局变量本身就是静态存储方式。静态全局变量和非静态全局变量的区别是

1. 非静态全局变量作用域是整个源程序,一个源程序由多个源文件组成时,非静态全局变量在各个源文件都是有效的。

2. 静态全局变量则是限制了作用域,只在定义该变量的源文件内有效。

以上分析得出结论是:

1. 把局部变量改成静态后改变它的存储方式,即改变生存期。

2. 把全局变量改为静态后是改变它的作用域,即改变它的使用范围。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: