C语言作用域、生命周期及static关键字学习

很久以前写过一篇关于C语言程序内存分布的博客https://blog.csdn.net/qq_37120369/article/details/104349078

现在,再对之前的一些知识进行补充

一、作用域:

全局变量的作用域有两种情况:

1、全局作用域在程序的各个角落都可以访问到

2、文件作用域只在当前代码文件中访问并使用

局部变量的作用域只在对应“{}”内有效

二、生命周期:

全局数据区中变量的生命周期从程序运行开始到程序销毁

空间中变量的生命周期从进入作用域开始到离开作用域销毁

三、C语言内存划分

           1、全局数据区(又称静态存储区,包括.bss段和.data段,存放全局变量、静态变量

           2、只读数据段(又称.rodata段,存放const、#define、类似“abc”的字符串常量等数据)

           3、栈空间(存放函数参数,局部变量

           4、堆空间(程序员自己分配的,比如malloc函数申请,free函数释放)

那么问题来了,Static修饰的全局变量和局部变量都放在全局数据区,那么他们有什么区别?

1、Static修饰的局部变量只初始化一次,生命期为整个程序的生命期,作用域依旧为局部

2、Static修饰的全局变量与普通的全局变量相比只是作用域变为了文件作用域

          

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rookie Linux

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值