c 语言的声明规则

时间:2022-02-09 22:18:43

    在阅读很多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 的常量指针"