##### 声明
- 声明
- **声明**是告诉编译器某个[[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`是在其他地方定义的变量
```