在阅读很多c 语言源代码的时候,我们经常会看到如下的声明
char *j[10]; // j 是一个指向数组的指针
const int *grape; // 指针所指向的对象是只读
int const *grape; // 同上
int *grape_jelly; // 指针是只读的(常量指针)
刚开始我们看书的时候,根据书上的介绍,很容易记住上面的定义,但是过段时间就很容易忘记了。那么我们怎样能很容易记住一个c 语言的声明呢?下面就介绍优先级规则:
A. 声明从它的名字开始读取,然后按照优先规则顺序依次读取。
B. 优先级从高到低依次是:
B. 1 声明中被括号括起来的那部分
B. 2 后缀操作符
括号( )表示这是一个函数,而方括号[ ] 表示这是一个数组
B. 3 前缀操作符:星号 * 表示 "指向.... 的指针"
C. 如果const 和 (或)volatile 关键字的后面紧跟类型说明符(如int ,long等),那么它作用于类型说明符。在其他情下cosnt
和(或) volatile 关键字作用于它左边紧邻的指针星号。
例如:
char * const *(*next)( )
这个声明表示 "next 是一个指针,指向一个函数,该函数返回值是一个指针,该指针是一个指向一个类型为 char 的常量指针"