extern和static的作用(有例子)
创作时间:
作者:
@小白创作中心
extern和static的作用(有例子)
引用
CSDN
1.
https://blog.csdn.net/2301_79461876/article/details/146379197
在C语言编程中,extern和static是两个非常重要的关键字,它们分别用于控制变量和函数的作用域和生命周期。本文将通过理论解释和代码示例,帮助读者深入理解这两个关键字的使用场景和具体作用。
一、extern
extern的作用
- 声明而非定义
extern告诉编译器某个变量或函数存在于其他地方(通常是另一个源文件),当前只是声明它,而不是定义它(分配内存)。定义只能在一个地方出现,而声明可以多次。 - 跨文件共享
它允许在多个源文件之间共享全局变量或函数,避免重复定义导致的链接错误。
例子:
1、头文件中的extern声明
文件结构:
- shared.h:头文件,包含extern声明。
- shared.c:定义全局变量和函数。
- main.c:使用头文件中的声明。
shared.c(定义)
shared.h(声明)
main.c(使用)
2、源文件中的extern声明
文件结构:
- file1.c:定义全局变量和函数。
- file2.c:使用extern声明并访问file1.c中的变量和函数。
file1.c(定义)
file2.c(声明并使用)
二、static
static在全局变量中的作用
- 链接属性(改变):
默认全局变量具有外部链接性,而static将其改为内部链接性(internal linkage),限制其作用域为当前源文件,其他文件无法通过extern访问。 - 生命周期(不变):
从程序开始运行到结束,贯穿整个程序生命周期。
static在局部变量中的作用
- 生命周期(改变):
贯穿整个程序生命周期,与程序生命周期相同,而不像普通局部变量那样随函数退出而销毁。 - 作用域(因为是局部变量,所以作用域还是在他自己的函数内部):
仍然局限于定义它的块(如函数内部),外部无法访问。
例子:分为全局变量使用和局部变量使用
1、全局变量使用static
一、不使用static情况:
解释:
- globalVar没有static,具有外部链接性。
- file2.c通过extern成功访问并修改了file1.c中的globalVar,两者共享同一变量。
二、使用static情况:
解释:
- globalVar被static修饰,具有内部链接性,仅在file1.c中可见。
- file2.c无法通过extern访问,链接器找不到globalVar的定义。
2、局部变量使用static
一、局部变量不使用static
每次调用这个函数,局部变量都会被初始化为零
解释:
- callCount是普通局部变量,存储在栈上。
- 每次countCalls()调用时,callCount重新分配内存并初始化为0,函数退出后销毁,因此每次输出都是1。
二、局部变量使用static
解释:
- callCount被static修饰,存储在静态数据区。
- 只在第一次调用时初始化为0,后续调用保留之前的值,因此每次调用递增,实现了计数功能。
热门推荐
叉车安全操作规程:10年事故率下降89%的秘诀!
C语言程序在内存中的分布详解
2024年中国废纸再生利用行业深度分析:产业链结构、发展历程及未来趋势
中考录取规则及方法 中考有几种录取方式
电流互感器的使用分析
JAMA Psychiatry:社会健康决定因素对自杀风险的影响
“梦”究竟是来自大脑,还是来自另一片时空?
电路中的分流:并联电路电流的计算方法
复利生息的原理和计算方法有哪些?这些原理和方法在实际应用中有哪些限制?
本赛季NBA最佳阵容预测 荣誉与经济双丰收
家庭教育之殇:警惕并纠正五种有毒父母行为模式
PCB板弯曲疲劳测试详解:从原理到操作步骤
1998香港金融保卫战:一场惊心动魄的经济生死较量
最幽微复杂的人性,被这5本小说讲透了!
20日线在股市投资中的应用:风险控制与投资策略指南
佳人学堂 | 县妇联举办“二十八星宿”主题文化讲座
年终奖成了年底跳槽一族的绊脚石,其实到底辞不辞职,关键看三点
合同履约保证金过高:法律分析与实践应对
如何做情绪的主人?
《泰拉瑞亚》联机指南:新手如何轻松与朋友共赴冒险之旅
2024男宝宝名字大全灵性,2024年男孩名字库
《鬼灭之刃》第 4 季通过新 PV 公布 2024 年 5 月上映日期
经常偏头痛,要小心!可能是这4种严重疾病的暗号
瑜伽后的黄金30分钟:8种抗炎食物加速肌肉修复
书单丨5部各领域鼻祖级神作,至今无人超越!
第一性原理:穿透表象的思维革命
头皮上总能摸到小疙瘩和脓包,或是5种疾病信号,别不当回事
农村人口老龄化对经济的影响
三星堆青铜神树:《山海经》扶桑树传说的现实印证?
工作拖延症的表现和对策