一个有趣的函数指针问题
昨天晚上跟同学讨论一个指针函数的定义,如下:
int *(*fun)(int,int)
他的解释:fun是一个指向返回值为int*,带两个int参数的函数指针。
注:也就是说他觉得上面函数应该是这样结合的
(int*)(*fun)(int,int)
我的解释:fun是一个指向返回值为int,带两个int参数的函数指针的指针。
注:我觉得应该是
int (*(*fun))(int,int),因为*是从右向左依次结合的,这也是我的理由,而且int和*之间还有空格。
昨晚看谭浩强的c语言,上面没有找到这个问题的答案,所以请教各位高手正确的答案。哪个是对的?求正确答案! 指针 c语言 函数指针
[解决办法]
我和你同学的看法一样!
[解决办法]
资料1:右左法则
http://blog.csdn.net/megaboy/article/details/482771
资料2:结合性,优先级,声明
http://blog.csdn.net/baihacker/article/details/9204449
资料3:声明转换
http://poj.openjudge.cn/practice/1001/
[解决办法]
介个在《C专家编程》第三章中说的很清楚了,你可以看看。。。
[解决办法]
你同学说得对,,
[解决办法]
int (**fun)(int, int);
[解决办法]
可以先用typedef 一个函数指针的类型,在用这个类型定义函数指针的指针
typedef int* (*fun)(int, int);//定义fun为函数指针的类型
fun* pf; //函数指针的指针