新浪博客

C语言中static用法总结

2017-11-03 14:18阅读:
网上看了一篇关于static的总结觉得很好,再次重新整理记录下来方便日后翻阅。
一、首先,用一句话定义static的作用:
static关键字作用是修饰静态变量(函数),区别于extern。由static修饰的变量其他源文件无法访问。同时用static修饰的静态局部变量具有保留上一次操作值的属性。
二、然后,我们看一下一个进程在内存中的布局
C语言中static用法总结
​1、其中.text段保存进程所执行的程序二进制文件,
2、.data段保存进程所有的已初始化的全局变量,
3、.bss段保存进程未初始化的全局变量(其他段中还有很多乱七八糟的段,暂且不表)。
在进程的整个生命周期中,.data段和.bss段内的数据时跟整个进程同生共死的,也就是在进程结束之后这些数据才会寿终就寝。
三、最后, 我们结合变量在内存中的存储来说明三种static的使用:
1、修饰全局变量:
由static修饰的静态全局变量存储在.data区,她的作用是不让其他源文件访问她自己。
2、修饰局部变量:

静态局部变量和局部变量不一样,她是存储在.bss区的,因此她的生命周期是整个进程。若未初识化默认为0,每一次访问静态局部变量她的值为上一次修改后的值。同样静态局部变量不能被其他函数和源文件访问。
3、修饰函数:
​用static修饰的静态函数具有C++中私有成员函数修饰符private的作用;被static修饰的静态函数只能被定义该静态函数的源文件访问。即静态函数对别的源文件不可见。

我的更多文章

下载客户端阅读体验更佳

APP专享