救命!这个函数声明是什么意思(c++)?

whatstheweather 2009-02-13 02:41:56
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
...全文
277 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉人自有天香 2009-02-14
  • 打赏
  • 举报
回复
定义了两个指向函数的指针 只不过是将这两个指针嵌套了
一个是 int (*Register)() 还有一个是int (*pf)() 楼主可以看看c++的书里介绍指针的那一张 应该都有讲指向函数的指针吧
不知道这样的回答可否满意
T_mon 2009-02-14
  • 打赏
  • 举报
回复
还是9楼厉害
Feng_Fing 2009-02-14
  • 打赏
  • 举报
回复
UP
hmsuccess 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hhyttppd 的回复:]
这样看得最明白了。

typedef int (*PFN)(const char *, const char *);

PFN Register2(PFN fn)

[/Quote]
学习
jackzhhuang 2009-02-13
  • 打赏
  • 举报
回复
这说明写复杂代码的时候一定要同时写注释。
rlxtime 2009-02-13
  • 打赏
  • 举报
回复
这个很像linux系统中信号的回调函数的类型,第一眼看到我以为就是那个函数了! 
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
这个函数的意思是:
是一个返回值是int (*) (const char*, const char*) 参数是(int (*) (const char*, const char*))的 函数类型
lzonline01 2009-02-13
  • 打赏
  • 举报
回复
应该是从Register所指的物理地址处开始执行把
jiahehao 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 waizqfor 的回复:]
好眼熟啊 好象昨天说过这个问题 是关于宏的
LZ看看复杂函数指针的声明吧
http://user.qzone.qq.com/117130181/blog/1232803130
[/Quote]

好东西。
whatstheweather 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sunnywyg 的回复:]
函数指针的寄存器函数指针?...愚见
[/Quote]

whatstheweather 2009-02-13
  • 打赏
  • 举报
回复
呵.....!估计是的吧
还是
typedef int (*PFN)(const char *, const char *);

PFN Register2(PFN fn)
好理解
nullah 2009-02-13
  • 打赏
  • 举报
回复
up
huangpeng8612 2009-02-13
  • 打赏
  • 举报
回复
我感觉好像写错了,应该是:int (*Register (int (*pf)(const char *, const char *))) (const char *, const char *)吧

通过typedef int(*A)(const char *, const char *);// A代表一个函数指针,它指向这样的函数:接收两个两符串,并返回一个整数
====> A Register(A);(接收A类型的参数,并返回A的函数.
这下就清楚了吧?

综合起来应该可以理解了吧?不过就是叙述起来太不容易.
fallening 2009-02-13
  • 打赏
  • 举报
回复
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
函数Register接受一个
int (*pf)(const char *, const char *)
函数指针作为参数,返回一个
int (*)(const char *, const char *)
类型的函数指针
hhyttppd 2009-02-13
  • 打赏
  • 举报
回复
这样看得最明白了。

typedef int (*PFN)(const char *, const char *);

PFN Register2(PFN fn)
sunnywyg 2009-02-13
  • 打赏
  • 举报
回复
函数指针的寄存器函数指针?...愚见
hhyttppd 2009-02-13
  • 打赏
  • 举报
回复
Register是个函数声明,
这个函数接受一个参数类型为int func(const char *, const char *)
的函数指针,并且返回类型为原型int func(const char *, const char *)的函数指针
hhyttppd 2009-02-13
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;


int func(const char *, const char *)
{
cout << "call int func(const char *, const char *)" << endl;
return 0;
}


int (*Register(int (*pf)(const char *, const char *)))(const char *, const char *)
{
return pf;
}

typedef int (*PFN)(const char *, const char *);

void main()
{
PFN pfn = Register(func);

pfn("", "");
}
scott_2009 2009-02-13
  • 打赏
  • 举报
回复
没见过这么写。。。
拆开看好像是int (*pf)(const char *, const char *)是个函数指针。
*Register(int (*pf)(const char *, const char *))然后把这个指针强制转换类*Register类型的指针
然后又构成了一个函数指针int (*Register (int (*pf)(const char *, const char *)) ) (const char *, const char *);
这么用有什么好处呢??实现什么功能呢?
sagegz 2009-02-13
  • 打赏
  • 举报
回复
如果没看错的话,这应该是个函数指针...
waizqfor 2009-02-13
  • 打赏
  • 举报
回复
好眼熟啊 好象昨天说过这个问题 是关于宏的
LZ看看复杂函数指针的声明吧
http://user.qzone.qq.com/117130181/blog/1232803130
加载更多回复(4)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧