static关键字

复习一下基础知识。

1.用static修饰的局部变量,要分清它的生存期作用域
在函数或者代码块中定义的变量,假如没有static的修饰,那么在函数或者代码块执行完毕后,变量就会被销毁。若是使用了static修饰,那么该变量直到程序结束才会被销毁。但是,无论是否采用了static修饰,变量的作用域都仍然是在这个函数或者代码块中。

注意事项,参考C语言static 关键字总结

  1. 程序运行很重要的一点就是可重复性, 而static变量的”记忆性”破坏了这种可重复性, 造成不同时刻至运行的结果可能不同.
  2. 普通的local变量的存储空间分配在stack上, 因此每次调用函数时, 分配的空间都可能不一样, 而static具有全局唯一性的特点, 每次调用时, 都指向同一块内存, 这就造成一个很重要的问题—— 不可重入性。

2.而对于全局变量,使用static修饰后,改变的是变量的作用域,使得变量只在当前的源文件中有效。为什么生存期没有变呢?因为全局变量本身就是静态存储的。

3.欲知详情,请看CSAPP(2e,7.5符号和符号表)。
来自书中的TIP:

C源代码文件扮演模块的角色。任何声明带有static属性的全局变量或者函数都是模块私有的。…尽可能用static属性来保护你的变量和函数是很好的编程习惯。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值