c语言声明的优先级规则&//c语言声明的解码环[摘自c专家编程]

//c语言声明的优先级规则
 A 声明从它的名字开始读取,然后按照优先级顺序依次读取。
 B 优先级从高到低依次是:
  B1 声明中被括号括起来的那部分
  B2 后缀操作符:
   括号()表示这个一个函数
   方括号[]表示这是一个数组.
  B3 前缀操作符:星号*表示"指向...的指针"
 C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符。在其他情况下,const和(或)

volatile关键字作用于他左边紧邻的指针星号.


//c语言声明的解码环


//1.取最左边的标识符(表示"标识符是")
//2.查看标识符右边的下一个符号,如果是方括号(对于每一对表示"...的数组")
//3.如果是一个左括号(到右括号为止的内容,表示"返回...的函数")
//4.如果左边的符号是一个左括号(这个左括号把已经处理的部分声明组合在一起,直到遇见对应的右括号。然后从第2步重新开始)
//5.如果左边的符号是下述之一: const、volatile、*(继续向左边读符号,直到所读符号不再是左边那3个之一。如果符号是const表示"只读"

,如果是volatile,表示"volatile",如果是*表示"指向...的指针",然后重复第4步)
//6.剩下的符号形成声明的基本类型(剩余的符号可一并阅读,如:static unsigned int)

//总结:
 一开始,我们从左边开始向右边寻找,直到找到第一个标识符。当声明中的某个符号与图中所示匹配时,便把它从声明中处理掉,以

后不再考虑。在具体的每一步骤上,我们首先查看右边的符号,然后再看左边。

//示范样例:
//char * const *(*next)();
next是一个指针
next是一个指向函数[无参]的指针
next是一个指向函数的指针,该函数的返回值也是一个指针
next是一个指向函数的指针,该函数的返回值也是一个指针,该指针指向一个只读的
next是一个指向函数的指针,该函数的返回值也是一个指针,该指针指向一个只读的字符的指针

//char *(* c[10])(int **p);
c是一个具有10个元素的数组
c是一个具有10个元素的数组,数组的每个成员是指针
c是一个具有10个元素的数组,数组的每个成员是指针,该指针是一个函数指针
c是一个具有10个元素的数组,数组的每个成员是指针,该指针是一个函数指针,该函数拥有一个指向指针的指针参数
c是一个具有10个元素的数组,数组的每个成员是指针,该指针是一个函数指针,该函数拥有一个指向指针的指针参数,每个函数的返回值是指向

char的指针

//void (*signal(int sig,void(*func)(int)))(int)
signal是一个函数
signal是一个函数,该函数返回一个指针
signal是一个函数,该函数返回一个指针,该指针是一个指向参数为int且没有返回类,的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值