您的位置:首页 > 编程语言 > C语言/C++

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

2011-06-03 15:30 323 查看
//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且没有返回类,的函数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: