返回信息流里面有一部分提到指向函数的指针可以作为函数的返回值,一个例子如下:
int (*ff(int))(int*,int);里面的解释是:该声明将ff()声明为一个函数,它有一个int型的参数,返回一个指向函数的指针,类型为:int(*)(int*,int);
问题:如何来分解这个声明,也就是说如何看出这个声明是上面的这个解释,有什么规律吗?
当然如果是用typedef先把返回值类型重新定义一眼就可以看出来了。
这是一条镜像帖。来源:北邮人论坛 / soft-design / #23160同步于 2007/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[求助]c++ primer的7.9里面的指向函数的指针的问题
ny
2007/12/17镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
顺序是右左右。
先向右,遇到(int),说明是个函数,带int参数。
再向左,遇到*,说明是个指针,指向什么待定。
再向右,遇到(int*,int),说明这个指针指向函数,这个函数参数为(int*,int)。
再向左,遇到int,这个指针指向的函数返回int。
【 在 ny 的大作中提到: 】
: 里面有一部分提到指向函数的指针可以作为函数的返回值,一个例子如下:
: int (*ff(int))(int*,int);里面的解释是:该声明将ff()声明为一个函数,它有一个int型的参数,返回一个指向函数的指针,类型为:int(*)(int*,int);
: 问题:如何来分解这个声明,也就是说如何看出这个声明是上面的这个解释,有什么规律吗?
: ...................
呵呵,我来搞定吧。
首先是这是一个函数声明,函数声明包括返回值类型,函数名,参数表。
而指针类型的结束处是*,int (*ff(int))(int*,int);,所以返回类型是int(*)(int*,int),ff是函数名,参数表示(int)
这样能说明白吗?
还是想多说一句,这个问题在thinking in c++中介绍函数指针那段中有详细的解释,建议lz不妨翻翻或者看看电子书
【 在 ny 的大作中提到: 】
: 谢谢楼上两位,,搞定了