##### 作用域 - 作用域 - **作用域**定义了[[C.标识符|标识符]]在程序中的可见范围, C语言有几种不同的作用域, 它们决定了标识符可以在哪些地方被访问 - 语法 - `块作用域` - 任何在[[C.复合语句|复合语句]] `{}` 中定义的标识符, 只在该代码块内部可见 - `文件作用域` - 在文件顶部定义的标识符, 在声明点开始, 翻译单元尾结束, 在整个文件内可见, 可以被该文件中的所有函数访问 - `函数作用域` - 仅适用于标签, 如[[C.goto 和标记语句|goto 和标记语句]]使用的标签, 在函数内的任何位置都可见 - `函数原型作用域` - [[C.函数|函数]]参数在函数原型 (函数声明) 的参数列表中仅在声明时可见, 之后无法在函数体外访问 - 示例 ```c // 块作用域 void func() { int a = 10; // a 的作用域仅限于 func 函数内部 if (a > 5) { int b = 20; // b 的作用域仅限于 if 语句块内部 } // printf("%d", b); // 错误,b 在此不可见 } // 文件作用域 int globalVar = 100; // 文件作用域的全局变量 static int fileGlobal = 50; // 文件作用域且仅限于当前文件 // 函数作用域 void func() { goto label; // 跳转到 label label: printf("This is a label\n"); } // 函数原型作用域 void func(int x, int y); // x 和 y 只能在函数原型中使用 ```