送分求解

影子传说_Hades 2011-05-13 01:59:07
求教下面三个定义有没有区别?

typedef int func(int*,int);
typedef int(*func)(int*,int);
typedef int(*func(int*,int));


下面是实验的例子

typedef int func(int*,int);
void f1(func); //形参可以这么写
func f2(int); //错误,因为f2返回函数类型
func *f3(int); //正确,因为返回指向函数指针

//下面的都是正确的(这个很奇怪)
typedef int(*func)(int*,int);
void f1(func);
func f2(int);
func *f3(int);

typedef int(*func(int*,int));
void f1(func);
func f2(int); //错误
func *f3(int);
...全文
91 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
GARY 2011-05-13
  • 打赏
  • 举报
回复

//下面的都是正确的(这个很奇怪)
typedef int(*func)(int*,int);
// 参数类型为“函数指针”
void f1(func);
// 返回值类型为“函数指针”
func f2(int);
// 返回值类型为“指向函数指针的指针”
func *f3(int);
影子传说_Hades 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dizuo 的回复:]

typedef int(*func)(int*,int);
这个才是函数指针类型定义。
[/Quote]

那其他倆呢?
bdmh 2011-05-13
  • 打赏
  • 举报
回复
typedef int func(int*,int);//这就是普通函数
typedef int(*func)(int*,int);//func是函数指针
typedef int(*func(int*,int));//func是普通函数,返回时这个函数的指针
ljt3969636 2011-05-13
  • 打赏
  • 举报
回复
typedef int func(int*,int);和typedef int(*func(int*,int));等同看待
HeartWasNot 2011-05-13
  • 打赏
  • 举报
回复
更正下。。最后一个错了。。是返回一个指向函数指针的指针。。。
影子传说_Hades 2011-05-13
  • 打赏
  • 举报
回复
老大,不是玩哦,我是想彻底弄明白,感谢两位了
ryfdizuo 2011-05-13
  • 打赏
  • 举报
回复
typedef int(*func)(int*,int);
这个才是函数指针类型定义。
HeartWasNot 2011-05-13
  • 打赏
  • 举报
回复
typedef int(*func)(int*,int);
LZ在玩人呢。。不是玩代码。。
这一句才是定义一个函数指针类型。。。
void f1(func);======>参数是一个指向函数的指针,没写参数名而已
func f2(int);=======>返回一个指向函数的指针
func *f3(int);======>也是返回一个指向函数的指针。。


ljt3969636 2011-05-13
  • 打赏
  • 举报
回复
//下面的都是正确的(这个很奇怪)
typedef int(*func)(int*,int);
void f1(func);//函数指针形参类型
func f2(int);//返回函数指针
func *f3(int);//返回函数指针的指针
都ok~

64,680

社区成员

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

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