读书人

一个有趣的函数指针有关问题

发布时间: 2013-09-05 16:02:07 作者: rapoo

一个有趣的函数指针问题
昨天晚上跟同学讨论一个指针函数的定义,如下:


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/
[解决办法]
引用:
昨天晚上跟同学讨论一个指针函数的定义,如下:


int *(*fun)(int,int)


他的解释:fun是一个指向返回值为int*,带两个int参数的函数指针。
注:也就是说他觉得上面函数应该是这样结合的
(int*)(*fun)(int,int)

我的解释:fun是一个指向返回值为int,带两个int参数的函数指针的指针。
注:我觉得应该是
int (*(*fun))(int,int)
,因为*是从右向左依次结合的,这也是我的理由,而且int和*之间还有空格。

昨晚看谭浩强的c语言,上面没有找到这个问题的答案,所以请教各位高手正确的答案。哪个是对的?求正确答案!

介个在《C专家编程》第三章中说的很清楚了,你可以看看。。。
[解决办法]
你同学说得对,,
[解决办法]
int (**fun)(int, int);
[解决办法]
引用:
Quote: 引用:

你同学说得对,,

那如果要声明函数指针的指针怎么写呢?int (*(*fun))(int,int);是这样吗?

可以先用typedef 一个函数指针的类型,在用这个类型定义函数指针的指针
typedef int* (*fun)(int, int);//定义fun为函数指针的类型
fun* pf; //函数指针的指针

读书人网 >C语言

热点推荐