BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #23160同步于 2007/12/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[求助]c++ primer的7.9里面的指向函数的指针的问题

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