关于函数声明。

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

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

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

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

百思不得其解。谁能解释一下么?
...全文
113 点赞 收藏 8
写回复
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()的返回值。
回复
SuperDay 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*)

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

回复
发动态
发帖子
新手乐园
创建于2007-09-28

3.2w+

社区成员

C/C++ 新手乐园
申请成为版主
社区公告
暂无公告