C语言static变量和全局变量的使用

本篇文章主要根据不同使用场合,来分析三种在程序运行期间一直可以修改的变量

1. static 局部变量

        当只是某个.c源文件中的某个函数需要使用它时,它的生存期为整个源程序,但是其作用域仍与局部变量相同,只能在定义该变量的函数内使用该变量.

2. static全局变量

        当某个.c源文件中所有函数都使用这个变量时, 它的生存期为整个源程序,其作用域也是,且不能被其他源文件调用.但如果将此变量定义在头文件中且其他源文件也使用这个static时,每个源文件会开配不同存储空间.具体例子见[1]第(5)所示. 根据分析,我们一般将static变量定义在.c文件中仅供本源文件使用

3.非静态全局变量(extern)

        当多个.c源文件都要使用该变量时, 其生存期是整个程序运行期间,作用域是所有源文件.与static变量的区别是非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域. 即只在 定义该变量的源文件内有效.

        较好的定义方式是: (1)在某个.h文件中用extern type variable;声明该全局变量

                                          (2)在某个.c文件中定义并初始化该变量type variable = init() (不能在某个函数内部)

                                          (3)在需要使用的.c源文件,include该变量所在的头文件即可


Reference

[1] C++全局变量的声明和定义

[2] C语言之static静态变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值