关于函数声明。

Dan1980 2006-05-13 02:11:10
我要声明一个无参的函数,这个函数返回一个指向无返回值、以char*为参数的函数的指针,试了很多种方式都不行,只好用typedef声明如下:

typedef void (*F)(char*);
F* f();

后来无意中从Eclipse给出的提示信息中,发现上面声明的f()函数实际上是:

void (**f())(char*)

百思不得其解。谁能解释一下么?
...全文
157 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Dan1980 2006-05-15
  • 打赏
  • 举报
回复
哎呀,分给错了,一楼的“cunsh(村少)”没给分,再次向你致谢吧,谢谢了。
aniude 2006-05-13
  • 打赏
  • 举报
回复
或者这样定义
typedef void (**F)(char *);
F *f()
aniude 2006-05-13
  • 打赏
  • 举报
回复
typedef void (*F)(char *);
这里的F就是一个函数指针,他指向的函数返回值是void,参数为char *
F f() 这里返回的是指向F的函数指针
F *f() f()已经返回的是指针,*f()指向的自然是指向指针的指针。
jixingzhong 2006-05-13
  • 打赏
  • 举报
回复
注意楼主你定义的时候 是 F* f();
里面有一个 * 号唉 !!!
0黄瓜0 2006-05-13
  • 打赏
  • 举报
回复
typedef void (*F)(char*);//F是函数指针类型

F* f();//申明一个无参函数,返回一个函数指针的指针

F f();//申明一个无参函数,返回一个函数指针


我要声明一个无参的函数,这个函数返回一个指向无返回值、以char*为参数的函数的指针
----------->>
不用typedef 写为void (* f())(char*); 把void(*)(char*)看做一个整体,是f()的返回值。
铖邑 2006-05-13
  • 打赏
  • 举报
回复
F f();
cunsh 2006-05-13
  • 打赏
  • 举报
回复
void (*f())(char*)
从里向外读.先右边再左边.
不过最好还是用typedef
Dan1980 2006-05-13
  • 打赏
  • 举报
回复
哦,谢谢大家。

是我搞错了,应该是
typedef void (*F)(char*);
F f();

实际声明是:
void (*f())(char*)

谁能说说读这种复杂声明的决窍吗?

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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