C语言的存储类型和关键字extern、static
2024-09-04 10:24:02
1、C语言中每个变量都有3个性质:存储期限、作用域、链接
1)存储期限:变量的存储期限决定了为变量预留的内存被释放的时间。共2种,自动存储期限(auto),静态存储期限(static),自动存储(auto)的变量在所属块被执行时获得内存单元,并在块终止时释放内存单元,自动的获得或释放内存,故名auto。具有静态存储的变量(static)在程序运行期间始终占有同一内存单元,静止不变,故名static。
2)作用域:变量的作用域指可以使用该变量的那一部分程序文本。共2种,块作用域指从声明位置到所在块的末尾均可见,文件作用域指从声明的地方到文件的末尾均可见。
3)链接:变量的链接指程序的不同部分可以共享此变量。共3种,外部链接指可以被程序中不同文件共享,内部链接指只属于单独一个文件,无链接指属于单独一个函数,而且根本不能被共享。
2、变量的默认存储期限、作用域、链接均依赖于变量的声明位置。
1)在块内声明的变量:自动存储期限、块作用域、无链接。
2)在程序最外层(任意块外部)声明的变量:静态存储期限、文件作用域、外部链接。
int i; //静态存储,文件作用域,外部链接
void f(void){
INT J; //自动存储,块作用域,无链接
}
3、static的特殊用途:
1)当在块外部,static说明变量为内部链接,注意:本来在块外部声明的变量具有外部链接,加上static后,变为内部链接,则外部不可见了。
2)当在块内部,static说明变量的存储期限为静态,注意:本来在块内部变量为自动存储期限。
static int i; //静态存储期限,文件作用域,内部链接
void f(void){
static int j; //静态存储,块作用域,无链接
}
最新文章
- freeswitch嵌入python脚本
- window对象的属性及事件。
- makefile之变量赋值
- Mutual Training for Wannafly Union #1解题报告
- [Json.net]快速入门
- mysql命令分类(DML、DDL、DCL)
- 查看centos中的用户和用户组
- cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
- [Linux]Linux 下的 Docker 安装与使用
- ubuntu下定时任务的执行
- mysql:Cannot proceed because system tables used by Event Scheduler were found damaged at server start
- VS2010:“error C2712: 无法在要求对象展开的函数中使用 __try”
- 关于 php json float 出现很多位的问题
- NPM(Node Package Manager,Node包管理器)
- BG.Hadoop.Master
- SQLAlchemy-方言(Dialects)
- css常用标签及属性
- 构建命令maven install 打包不是最新的代码
- 洛谷P2196 挖地雷(dp)
- JavaScript数据结构-树