雅乐网

计算机技术、学习成长

编程 » C/C++ » 看懂任何c语言声明:优先级规则

看懂任何c语言声明:优先级规则

c语言的声明模型有点晦涩。比如语句

char * const *(* next)();

要解释一个声明,首先要懂得其中的优先级规则。规则如下

  1. 声明从它的名字开始读取,然后按照优先级顺序依次读取
  2. 优先级从高到低
    2.1 括号声明中被括号括起来的部分

    2.2 后缀操作符:

    括号()表示这是一个函数

    方括号[]表示这是一个数组

    2.3 前缀操作符

    星号*表示“指向…的指针”

  3. 如果const关键字的后面紧跟类型说明符(如int float等),那么const作用于类型说明符。其他情况下,const关键字作用于他左边紧邻的指针星号。

例子

char * const *(* next)();

第一步:首先变量名next 注意到他被括号包住

第二步:

1. 把括号里的东西看成一个整体,得出next是指向…的指针

2. 考虑括号外面 在星号前缀和括号后缀之间选择。根据优先级2.2 优先级高的是右边的括号,所以 next是一个函数指针,指向一个返回值是…的函数

3. 处理前缀操作符。得出指针所指向的内容。

第三步: 把char * const *解释为指向字符的常量指针。

 

这个分析告诉我们,这个声明表示

next是一个指针,它指向一个函数,该函数返回另一个指针,该指针指向一个类型是char的常量指针。

如果文章对你有帮助,欢迎点赞或打赏(金额不限)。你的打赏将全部用于支付网站服务器费用和提高网站文章质量,谢谢支持。

版权声明:

本文由 原创,商业转载请联系作者获得授权。
非商业转载请注明作者 雅乐网 ,并附带本文链接:
http://www.yalewoo.com/c_declarator.html

上一篇:

下一篇:

我要评论

验证码*: 1 + 1 =