新手提问:typedef int *(*pFun)(int, char*); 怎么解释啊?麻烦大家了!

skyering 2008-10-15 09:24:56
原声明:int *(*a[5])(int, char*);
变量名为a,直接用一个新别名pFun替换a就可以了:
typedef int *(*pFun)(int, char*);
原声明的最简化版:
pFun a[5];

到底应该怎么理解这句话呢?谢谢大家了!
...全文
648 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lq651659889 2008-10-15
  • 打赏
  • 举报
回复
11楼的
skyering 2008-10-15
  • 打赏
  • 举报
回复
晕 结的早了!怎么办
grellen 2008-10-15
  • 打赏
  • 举报
回复
int *(*a[5])(int, char*); 

首先a是一个数组,数组里存放的是指针,指针指向的是函数,函数的返回值类型为int*, 函数的两个参数类型为int 和char*;
用typedef int *(*pFun)(int, char*); 定义返回值类型为int*, 两个参数类型为int 和char的个函数指针;
所以
int *(*a[5])(int, char*); 和
typedef int *(*pFun)(int, char*);
pFun a[5]; 是等价的
jintianfree 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 skyering 的回复:]
谢谢楼上的解答 但是 int *(*pFun)(int, char*); 这样写 然后在这样写:pFun b;不行么?
[/Quote]

可以呀,pFun a[5];
声明了五个这样的指针
pFun b;
声明了一个这样的指针而已

b 与 a[0]~a[4]都一样的。

楼上的一语到破哈

别名

typedef int *(*pFun)(int, char*);

pFun 是 int *(* )(int, char*) 的别名
skyering 2008-10-15
  • 打赏
  • 举报
回复
懂了 ,谢谢了!
e_sharp 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 skyering 的回复:]
那typedef有什么用呢?
[/Quote]

起个别名

typedef int *(*pFun)(int, char*);

pFun 是 int *(* )(int, char*) 的别名
skyering 2008-10-15
  • 打赏
  • 举报
回复
谢谢楼上的解答 但是 int *(*pFun)(int, char*); 这样写 然后在这样写:pFun b;不行么?
jintianfree 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 skyering 的帖子:]
原声明:int *(*a[5])(int, char*);
变量名为a,直接用一个新别名pFun替换a就可以了:
typedef int *(*pFun)(int, char*);
原声明的最简化版:
pFun a[5];

到底应该怎么理解这句话呢?谢谢大家了!
[/Quote]

typedef int pInt; 知道什么意思,上面的就好理解了哈。
pInt a[5];

typedef int *(*pFun)(int, char*);
声明一个函数指针类型pFun , 给类型的指针指向的函数,返回类型为 int * 参数为(int ,char *)

这样pFun 就和 pInt 一样是一种类型了

可以利用他来声明变量

pFun b; 一个函数指针
pFun a[5]; 一个函数指针数组 a[0]到a[4]每一个都是一个函数指针。

你可以定义一个这样的函数

int * Fun(int i,char *c)
{
int *c=new int;
*c=i;
return c;
}

然后

pFun b;

b=Fun;

可以利用b来调用Fun函数

b(2,c) 等价于 Fun(2,c)
sys0002 2008-10-15
  • 打赏
  • 举报
回复
typedef起到定义声明一个函数指针类型的作用。

skyering 2008-10-15
  • 打赏
  • 举报
回复
那typedef有什么用呢?
sys0002 2008-10-15
  • 打赏
  • 举报
回复
typedef int *(*pFun)(int, char*);

函数指针可以指向例如:int* Test(int n, char* p);的函数。
sys0002 2008-10-15
  • 打赏
  • 举报
回复
typedef int *(*pFun)(int, char*);
声明一个函数指针

pFun a[5];
定义五个pFun类型的函数指针


fox000002 2008-10-15
  • 打赏
  • 举报
回复
就是函数指针类型的定义

可以看看 TCPL 7.7 Pointer to Function

65,211

社区成员

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

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