static 作用一:修饰全局变量
一、普通全局变量
在 C 语言中,如果你定义了一个全局变量(不加 static),它的 作用域 默认是整个工程的:
- 可以在其它源文件里通过 extern 声明后使用。
- 链接器会把它当成全局符号。
// file1.c
int g_var = 0; // 普通全局变量// file2.c
extern int g_var;
void func() {g_var = 10; // 可以访问 file1.c 的全局变量
}
二、static 修饰全局变量
- 如果用 static 修饰全局变量,那么它的 作用域 会被限制在当前源文件(编译单元)。
- 它不会被其它源文件通过 extern 访问到。
// file1.c
static int g_var = 0; // 仅 file1.c 可见// file2.c
extern int g_var; // 错误!找不到,因为 g_var 在 file1.c 里是内部链接
三、意义
- 限制作用域:变量只在当前源文件可见。
- 避免命名冲突:不同文件里可以有同名的 static 全局变量,互不干扰。