C语言extern和static
下面的代码段说明了变量和形式参数声明中怨念或者省略存储类型的所有可能的方法。
int a;
extern int b;
static int c;
void f(int d, register int e)
{
auto int g;
int h;
static int i;
extern int j;
register int k;
}
下表说明了上述例子中每个变量和形式参数的性质。
名字 | 存储期限 | 作用域 | 链接 |
a | 静态 | 文件 | 外部 |
b | 静态 | 文件 | ① |
c | 静态 | 文件 | 内部 |
d | 自动 | 块 | 无 |
e | 自动 | 块 | 无 |
g | 自动 | 块 | 无 |
h | 自动 | 块 | 无 |
i | 静态 | 块 | 无 |
j | 静态 | 块 | ① |
k | 自动 | 块 | 无 |
①由于这里没有显示出变量b
和j
的定义,所以不能确定它们的链接。在大多数情况下,变量会定义在另一个文件中,并且具有外部链接。
在这4
种存储类型之中,最重要的是extern
和static
。auto
没有任何效果,而现代编译器已经使register
变得不如以前重要了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)