##### 声明符 - 声明符 - **声明符**是[[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`类型元素的数组的指针 ```