##### 声明符
- 声明符
- **声明符**是[[C.声明|声明]]中被指定类型的符号, [[C.标识符|标识符]]是最基本的声明符, 绝大多数的声明都需要使用标志符
- 语法
- `标志符` [[C.标识符|标识符]]
- `非指针声明符[表达式]` [[C.数组声明|数组声明]]
- `非指针声明符(形参)` [[C.函数声明|函数声明]]
- `*声明符` [[C.指针声明|指针声明]]
- `(声明符)` [[C.声明优先级|声明优先级]]
- 示例
```c
int a;
// 声明符是标志符`a`, 类型说明符是`int`
// `a`是一个`int`类型对象
int *p;
// 声明符是指针声明符`*p`, 类型说明符是`int`
// `p`是一个指向`int`类型的指针
int arr[10];
// 声明符是数组声明符`arr[10]`, 类型说明符是`int`
// `arr`是一个包含10个整型元素的数组
int func(int a, float b);
// 声明符是函数声明符`func(int a, float b)`, 类型说明符是`int`
// `func`是一个接收`int`和`float`参数并返回`int`的函数
int (*p)[10];
// 声明符是指针声明符`*p`和数组声明符`[10]`, 类型说明符是`int`
// 优先声明指针`p`
// `p`是一个指向包含10个整型元素的数组的指针
int *arr[10];
// 声明符是指针声明符`*`和数组声明符`arr[10]`, 类型说明符是`int`
// 优先声明数组`arr`
// `arr`是一个包含10个指向整型的指针的数组
int (*funcPtr)(int, float);
// 声明符是指针声明符`*funcPtr`和函数声明符`(int, float)`, 类型说明符是`int`
// 优先声明指针`funcPtr`
// `funcPtr`是一个指针, 指向接收`int`和`float`参数并返回`int`的函数
int (*(*foo)(double))[3];
// `foo`是一个指针, 指向接收`double`参数并返回一个指向包含3个`int`类型元素的数组的指针
```