函数指针

ningweidong 2008-02-23 09:19:52
函数参数的类型不能是函数类型,函数类型的参数将被自动转换成该函数类型的指针。例如
// typedef 表示一个函数类型
typedef int functype( const string &, const string & );
void sort( string *, string *, functype );
编译器把sort()当作已经声明为
void sort( string *, string *, int (*)( const string &, const string & ) );
上面这两个sort()的声明是等价的。
注意,除了用作参数类型之外,函数指针也可以被用作函数返回值的类型。例如
int (*ff( int ))( int*, int );
该声明将ff()声明为一个函数,它有一个int 型的参数,返回一个指向函数的指针,类型为
int (*) ( int*, int );
同样,使用typedef 名字可以使声明更容易读懂。例如,下面的typedef PF 使得我们能更容易地分解出ff()的返回类型是函数指针。
// typedef 使声明更易读
typedef int (*PF)( int*, int );
PF ff( int );

这里C++primer中的一段话,不过看不太懂.
typedef int functype( const string &, const string & );
这句话什么意思?

int (*ff( int ))( int*, int );
这句话实在是看不懂.
它说ff是一个返回函数指针的函数.这个理解不了.
请大家帮忙看一下.
还有,返回一个函数的指针,用在什么地方啊.
...全文
103 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-02-23
  • 打赏
  • 举报
回复
这样看
typedef int (*FFFF)(int*, int);
FFFF (*ff)(int);
Treazy 2008-02-23
  • 打赏
  • 举报
回复
pf是个函数指针,指向的函数有2个参数,一个是int *一个是int
函数返回int

而ff也是个函数,这个函数有一个参数就是int
该函数返回一个pf
robot1314 2008-02-23
  • 打赏
  • 举报
回复
typedef int functype( const string &, const string & );
这句话什么意思?

A: 声明一个函数指针

int (*ff( int ))( int*, int );
这句话实在是看不懂.
它说ff是一个返回函数指针的函数.这个理解不了.

ff是一个函数指针,其所指向的函数的返回值是一个函数指针FF,形参列表为int;而FF的返回值为int,形参列表为int*,int
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-02-23 09:19
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下