深入解析C语言中static关键字的三重作用及其隐藏特性
在C语言中,static的字面意义很容易让我们误入歧途。事实上,它具有三个功能。

首先要介绍的也是最重要的一点是:隐藏。
当我们同时编译多个文件时,所有不带static前缀的全局变量和函数都具有全局可见性。为了理解这句话,我举个例子来说明一下。我们需要同时编译两个源文件,一个是ac,另一个是main.c。
以下是ac的内容
复制代码代码如下:
字符a = 'A'; // 全局变量
无效消息()
printf("你好\n");
以下是main.c的内容
复制代码代码如下:
int 主函数(无效)
外部字符a; // extern变量在使用前必须声明
printf("%c", a);
(无效)msg();
返回0;
程序运行结果为:
你好
你可能会问:为什么ac中定义的全局变量a和函数msg可以在main.c中使用呢?如前所述,所有不带 static 前缀的全局变量和函数都具有全局可见性,也可以被其他源文件访问。在这个例子中,a是一个全局变量,msg是一个函数,并且它们没有static前缀,因此它们对另一个源文件main.c是可见的。
如果添加了static,它将对其他源文件隐藏。例如,如果在a和msg的定义之前添加static,则main.c将看不到它们。此功能允许您在不同文件中定义具有相同名称的函数和变量,而无需担心命名冲突。 Static 可以用作函数和变量的前缀。对于函数来说,static的作用仅限于隐藏