总结:关键字static的使用方法
3. 可执行程序内存空间与逻辑地址空间的映射与划分
左边是UNIX系统的执行文件,右边是进程对应的逻辑地址空间的划分情况
4. 举例
二、static 变量
static变量主要区分静态全局变量和全局变量、局部变量和静态局部变量之间的区别。
1. 静态全局变量、全局变量
静态全局变量、全局变量的区别主要通过生存周期和作用域来区别。
全局变量静态全局变量生存周期程序运行到程序结束程序运行开始到程序结束作用域所有的代码只有当前文件可以访问代码段中位置全局数据区全局数据区a.静态全局变量和全局变量均存放在数据段.data中;b. 静态局部变量在函数内定义,生存期为整个源程序,但作用域与自动变量相同,只能在定义该变量的函数内使用。退出该函数后, 尽管该变量还继续存在,但不能使用它。c. 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。d.全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。但是他们的作用域,非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用);而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。全局变量实例
以下是b.c 和 a.c源代码
全局变量
编译
gcc a.c b.c
执行结果:
执行结果
由编译结果可知,文件a.c可以访问到b.c文件中的静态全局变量b。
静态全局变量实例
编译结果
编译结果
由编译结果可知,文件a.c无法访问到b.c文件中的静态全局变量b,所以编译报错。
2. 静态局部变量、局部变量
静态局部变量、局部变量的区别主要通过生存周期和作用域来区别。
局部变量静态局部变量生存周期函数调用到函数返回程序运行开始到程序结束作用域函数内部函数内部代码段中位置栈全局数据区
静态局部变量存放在数据段.data中,局部变量在栈中;静态局部变量和局部变量都只能在函数体内部才可以访问。
函数每次访问的静态局部变量,该变量的值为最后一次访问修改后的值。
举例:
1 #include <stdio.h>
2
3
4 void func()
5 {
6 int aa = 11;
7
8 printf("aa= %d ",aa++);
9
10 }
11
12 int main(int argc, char **argv)
13 {
14
15 func();
16 func();
17
18 return 0;
19 }
图片新闻
最新活动更多
-
12月12日火热报名中>>> STM32全球线上峰会
-
即日-12.26火热报名中>> OFweek2024中国智造CIO在线峰会
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
即日-0120限时下载>>> 爱德克(IDEC)设备及工业现场安全解决方案
-
限时免费下载立即下载 >>> 2024“机器人+”行业应用创新发展蓝皮书
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
- 1 蓝卓工业操作系统supOS6.0重磅发布 四大特性深度解读!
- 2 上海国际嵌入式展暨大会(embedded world China )与多家国际知名项目达成合作
- 3 史上首次,大众终于熬不住开启40亿降本计划!关3个工厂,裁员万名...
- 4 守护绿色学习空间,EK超低温热泵服务对外经济贸易大学图书馆
- 5 颜值高 有“门”道|贝特威汽车门板内饰AI视觉检测解决方案
- 6 优傲正式建立中国生产能力,发布两款专为本土市场定制的全新协作机器人,强化在华布局
- 7 观众登记启动 优解制造未来,锁定2025 ITES深圳工业展
- 8 3大场景解读 | 红外热像仪赋能科研智造创新应用
- 9 揭秘:「全球知名跨境电商」构建核心竞争力的“独门绝技”是?
- 10 赋能“芯”领域 | 高德智感热像仪助力IGBT热检测
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论