收录日期:2021/01/23 18:04:14 时间:2016/07/12 06:44:26 标签:C++ 语言
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
我从没见过啊!!!!!!!!!
LZ可以不用学C++了,括号都不匹配.
踢版的?还什么C++必将被摧毁.
引用 2 楼 sagegz 的回复:
LZ可以不用学C++了,括号都不匹配. 
踢版的?还什么C++必将被摧毁.

括号匹配看错.
引用 2 楼 sagegz 的回复:
LZ可以不用学C++了,括号都不匹配. 
踢版的?还什么C++必将被摧毁.


不是匹配的吗!!!!!!!!!!!!!!!
认真点好不好
好眼熟啊 好象昨天说过这个问题 是关于宏的
LZ看看复杂函数指针的声明吧 
http://user.qzone.qq.com/117130181/blog/1232803130
如果没看错的话,这应该是个函数指针...
没见过这么写。。。
拆开看好像是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 *);
这么用有什么好处呢??实现什么功能呢?

#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("", "");
}
Register是个函数声明,
这个函数接受一个参数类型为int func(const char *, const char *)
的函数指针,并且返回类型为原型int func(const char *, const char *)的函数指针
函数指针的寄存器函数指针?...愚见
这样看得最明白了。

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

PFN Register2(PFN fn)
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
函数Register接受一个
int (*pf)(const char *, const char *)
函数指针作为参数,返回一个
int (*)(const char *, const char *)
类型的函数指针
我感觉好像写错了,应该是: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的函数.
这下就清楚了吧?

综合起来应该可以理解了吧?不过就是叙述起来太不容易.
up
呵.....!估计是的吧
还是
typedef int (*PFN)(const char *, const char *); 

PFN Register2(PFN fn) 
好理解
引用 10 楼 sunnywyg 的回复:
函数指针的寄存器函数指针?...愚见


引用 5 楼 waizqfor 的回复:
好眼熟啊 好象昨天说过这个问题 是关于宏的 
LZ看看复杂函数指针的声明吧 
http://user.qzone.qq.com/117130181/blog/1232803130


好东西。
应该是从Register所指的物理地址处开始执行把
这个很像linux系统中信号的回调函数的类型,第一眼看到我以为就是那个函数了! 
int (*Register (int (*pf)(const char *, const char *)))(const char *, const char *);
这个函数的意思是:
是一个返回值是int (*) (const char*, const char*) 参数是(int (*) (const char*, const char*))的 函数类型
这说明写复杂代码的时候一定要同时写注释。
引用 11 楼 hhyttppd 的回复:
这样看得最明白了。

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

PFN Register2(PFN fn)

学习
UP
还是9楼厉害
定义了两个指向函数的指针  只不过是将这两个指针嵌套了  
一个是 int (*Register)()  还有一个是int (*pf)()  楼主可以看看c++的书里介绍指针的那一张  应该都有讲指向函数的指针吧
不知道这样的回答可否满意

点击链接后显示数据,再次点击则隐藏 SetWindowText 控件恢复 如何安装sql server 2000复制组件? METEOR_II_DIG 图像卡 问题 接分哥,你已经被哥代表咯,呵呵 讨论:PB与ORACLE,空字符串与NULL的更新 IBM服务器选型:大型企业绿色 IT 四步走 如何转换下列字符串为 UTF-8格式下面的汉字? 怎么在点击链接显示层后 位置 不置顶 引用别人编译过的 dll ,类名,方法名 成这样的x6d683e3089a43813.x033fe16573ed781d 谁能给我解释下Request.Form的原理 [Dll注册]在没有安装VC 2008的机器上注册Dll必须安装2008 runtime么 【散分】信曾哥,笔试顺利通过 关于webservice编译的小疑问 在Asp.net中 如何用javascript调用Web Service Android虚拟器问题 虚拟主机Linux(Ubuntu9.10)连接主机 的路由器Or无限网卡上网方法 以下代码,不能点击链接,什么原因? GridView 72般绝技 有用powerdesigner的吗? 灵活顶点格式中,顶点坐标和纹理坐标的相关问题。。 Hibernate分页时遇到的奇怪的问题,急急急!!! oracle 大数据量解决方案 2月14日 深圳西 ----- 南京西 有一起走的沒﹗﹗﹗﹗ 求一个INF文件的写法 关于nfs mount的一个问题 表复制问题 一个功能实现(C#实现) 谢谢 在类里面定义自己的对象引用