[C]C语言声明/函数声明/数组声明

理解复杂的C语言声明的方法是从声明中的名字开始,按照优先级顺序依次读取。优先级规则如下:

1.声明中被括号括起来的部分

2.后缀操作符:

   括号()表示这是一个函数,而方括号[]表示这是一个数组。

3.前缀操作符:

   *表示“指向...的指针”

另外,对于有const或volatile关键字的声明,当const或volatile后面紧跟类型说明符(int, long等),那么它作为类型说明符。其他情况下,const或volatile作为用于它们左边紧邻的指针星号。


例,char *(* c[10])(int **p)意为,c是一个数组,它的元素类型是函数指针,其所指向的函数的参数为指向int指针的指针,返回值是一个指向char的指针。

int (*(*f)())[10]意为,f是一个指向函数的指针,该函数的返回值是一个指针,该指针指向一个大小为10的int数组。

Pointers on C, P258; Expert C Programming, P64.

posted @ 2012-09-06 19:33  浓得化不开  阅读(1297)  评论(0编辑  收藏  举报