理解C语言声明的优先级规则:
- 声明从它的名字开始读取,然后按照优先级顺序依次读取
- 优先级从高到低依次是:
B2 后缀操作符:括号()表示是一个函数,二方括号[]表示这是一个数组
B3 前缀操作符:星号*表示“指向~的指针”
3、如果const和(或)volatile关键字的后面紧跟类型说明符(int,long等),那么它作用于类型说明符。在其他情况下,const和(或)volatile关键字作用于它的左边紧邻的指针星号。
例:char * const * (* next)();
首先看next,(*next)表示一个指向***的指针;(*next)()表示一个函数指针,返回值是一个指针(*next);*(*next)()表示取这个函数返回的指针所指向的内容;char * const表示一个指向字符的常量指针(const作用于指针)。
合起来就是next是一个指针,指向一个函数,该函数返回另一个指针,该指针指向一个类型为char的常量指针。