C声明的基本优先级规则

C的声明有时候很复杂,不了解规则的人可能会对复杂的C声明极为反感,但是如果了解了C声明的基本优先级规则。

那么弄清楚C声明就是易如反掌的事情了。

C声明的规则如下:

A:        声明从它的名字开始读取,然后按照优先级顺序依次读取。
B:         优先级从高到低依次是:


                   B.1 声明中被括号括起来的那部分
                   B.2 后缀操作符:
                               括号()表示这是一个函数,而方括号[]表示这是一个数组.
                   B.3 前缀操作符:星号*表示 "指向...的指针".
C:            如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long等 ),那么它作用于类型说明符.在其他情况下,
                const和(或)volatile关键字作用于它左边紧邻的指针星号.




如: linux中的signal()声明如下:

void (*signal(int sig,void (*func)(int))) (int);

根据规则得出这个声明的意思:signal是一个函数,它返回一个函数指针,而这个指针所指向的函数接受一个int参数并返回void.其中我们没有介绍signal的参数,它的参数有两个

一个是int型的sig,另一个参数void (*func)(int),这个参数的意思是:它表示func是一个指针,它指向一个函数,而这个函数有一个int型 的参数,并且返回值是void.


这样我们根据基本的规则就可以把一个复杂的函数声明拆开来分析,最终完全理解它的意思.其实很简单.只是看起来有一点复杂而已.
posted @ 2009-10-02 03:46  冷月X  阅读(434)  评论(0编辑  收藏  举报