首页 > 其他 > 详细

娓娓道来c指针 (4)解析c的声明语句

时间:2014-07-26 01:56:16      阅读:356      评论:0      收藏:0      [点我收藏+]

                         (4)解析c的声明语句

在继续探索c指针之前,有必要来解析下c语言中复杂的声明语法。

只需要记住两点:一个原则,一个规则。

原则:先看标示符。

规则:运算符优先级是规则。


举例说明

1.最简单的 int array[3];

结论:array是数组,数组规模是3,元素类型是int。

解析过程:先看标示符:array,只有一个运算符[],那么array就是数组,元素类型是int,完了。


2.难一点的

(1)数组指针 int(*array)[3];

结论:array是一指针,指向一数组,数组规模是3,数组中元素类型int。

解析过程:先看标示符:array,由于使用了括号运算符,只能先解析(*array):说明array是一指针。解析完了的,就可抛弃,那么只剩下[],说明指向的是一数组,剩下的不解释了。

(2)指针数组 int *array[3];

结论:array是一数组,数组规模是3,数组中元素类型是int*。

解析过程:先看标示符:array,由于[]优先级高于*,故array先与[]结合:说明array是一数组。只剩下一个*,说明数组中存放的是指针,指针指向的类型是int,也就是说数组中存放的元素类型是int*。

看来只差一个(),意义完全不同。

数组指针和指针数组的内存示意图:

bubuko.com,布布扣


3.再复杂一点的

函数指针 int (*pfun)(int,int);

结论:pfun是一函数指针,即pfun指向一个函数,该函数有两个参数,参数类型是int、int,并且函数的返回值的类型是int。

解析过程:先看标示符:pfun,由于使用了括号运算符,只能先解析(*pfun):说明pfun是一指针。现只剩下(int,int),进一步说明pfun指向的是一函数,该函数有两参数,类型都是int,最后的int,说明函数的返回值类型是int。


4.更加复杂一点

int *(*pfun[3])(int, void (*)(int, int*));

是否有眼花缭乱的感觉,运用上面的方法,你会解析出来的。不妨写在评论中,比较看看。


专栏目录:C指针


娓娓道来c指针 (4)解析c的声明语句,布布扣,bubuko.com

娓娓道来c指针 (4)解析c的声明语句

原文:http://blog.csdn.net/zhangxiangdavaid/article/details/38082183

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!