静态变量static学习

工作时曾经遇到过这样的情况,代码中变量在运行前调试时是有值的,运行后变量值变为0,后来给变量前加了static之后,变量值才不会改变。
现在分析一下原因:
本人是在c#的类中声明的变量(以为在函数外部声明的就是全局变量,其实C#中是没有全局变量的概念,但可以通过static来模拟全局变量),该变量属于局部变量,随着函数的调用结束后会释放。通过给变量加static关键字,则改变了变量的生存期,即在函数调用与结束时值是保持不变的。现在简单学习一下静态变量。
static变量含义
静态变量,类型说明符static。

静态局部变量:
1. 函数内部的局部变量加static之后作用域并没有改变,还是在该函数内部。不同之处是普通局部变量会随着调用结束而被释放,而添加static后,无论变量是否被调用,都会一直存在。
2. 函数体内如果在定义的静态变量时进行初始化,则以后程序不再进行初始化操作,即静态变量的初始化语句只在第一次调用执行。
3. 静态局部变量的初始化必须是常量或者常量表达式。及时局部变量未赋初值,系统会自动赋值为0,而对于自动变量赋值则是不确定的。

静态全局变量:
全局变量的说明之前加static则够成静态全局变量。全局变量本身就是静态存储方式。静态全局变量和非静态全局变量的区别是
1. 非静态全局变量作用域是整个源程序,一个源程序由多个源文件组成时,非静态全局变量在各个源文件都是有效的。
2. 静态全局变量则是限制了作用域,只在定义该变量的源文件内有效。

以上分析得出结论是:
1. 把局部变量改成静态后改变它的存储方式,即改变生存期。
2. 把全局变量改为静态后是改变它的作用域,即改变它的使用范围。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值