##### 声明 - 声明 - **声明**是告诉编译器某个[[C.标识符|标识符]]的存在及其[[C.类型|类型]]信息, 声明可以通过初始化提供其初始值. 如果声明包括了具体实现分配了内存空间, 则被称为**定义**. 可以重复声明但不能重复定义. 声明可以出现在任何范围内, 每个声明都以分号 `;` 结尾, 就像语句但不是语句 - 语法 - `说明符和限定符 声明符;` - `说明符和限定符 初始化声明符;` - [[C.存储类说明符|存储类说明符]] - [[C.对齐说明符|对齐说明符]] - [[C.类型说明符|类型说明符]] * - [[C.类型限定符|类型限定符]] - [[C.声明符|声明符]] * - [[C.初始化|初始化]] - 示例 ```c int a; // 这里的声明符是标志符`a`, 类型说明符是`int` // 定义`a`为`int`类型对象, 如果在全局范围内, 它将被初始化为0, 如果在局部范围内, 它将是不确定的值 int a = 1; // 定义`a`为整数并初始化为1 extern int a; // 声明`a`为整数, 告诉编译器`a`是在其他地方定义的变量 ```