int *(*f())() 是啥意思,请举例。

ioioio 2005-11-06 01:38:28
xiexie
...全文
919 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongfang 2005-11-09
  • 打赏
  • 举报
回复
看看收获还真多
binbin 2005-11-09
  • 打赏
  • 举报
回复
既然是以C语言版,改成C的:
f与返回的函数的参数都是不定的.

#include <stdio.h>

int* a()
{
printf("%s", "a");
}
int *(*f())()
{
return a;
}
int main(int argc, char* argv[])
{
f()();
return 0;
}
binbin 2005-11-09
  • 打赏
  • 举报
回复
f是一个返回(返回一个整型指针的函数)的指针的函数.f本身没有参数(C++)或参数不定(C)

#include <iostream>
using namespace std;
int* a()
{
cout << "a";
}
int *(*f())()
{
return a;
}
void main()
{
f()();
}
taoliangzhi 2005-11-09
  • 打赏
  • 举报
回复
是个指针,看这些东西时因该先看到变量(f)
junhao_666 2005-11-09
  • 打赏
  • 举报
回复
int *(*f())() 就是 返回值为“返回值为int型指针的指针函数”的函数指针
lvyao1011 2005-11-08
  • 打赏
  • 举报
回复
学习
fjm_520 2005-11-08
  • 打赏
  • 举报
回复
真烦啊

遇到这样的问题,绕过~
liuq 2005-11-08
  • 打赏
  • 举报
回复
讨论这种问题有什么用?能用简单易懂的方式写出稳定有效的程序才是本事!
nillge 2005-11-08
  • 打赏
  • 举报
回复
不是函数,指向一个表的指针的指针!!!
有用的,大家有兴趣可以研究...
nillge 2005-11-08
  • 打赏
  • 举报
回复
构造函数吸构函数的初始化就是这样的,大家可以看看cinit(...).
int _initterm_e (int(_cdecl *fStart[])(void), int(_cdecl *fEnd[])(void))
{
int i = 0,ret = 0;
while ( &fStart[i] < fEnd && ret == 0)
{
if( fStart[i] != NULL )
{
ret = ( * fStart[i] )();
}
i ++;
}
return ret;
}
junhao_666 2005-11-08
  • 打赏
  • 举报
回复
同意newbiestar() jiazichenzhan(毛毛) 的说法

我是这样理解的:
*f() 说明这个函数f返回值是一个指针;
*()() 说明*f()所返回的指针又指向一个指针,而这个指针指向一个函数;
int *(*f())() 说明上面说的那个指针所指的函数返回的是一个指针,类型为int *;
e1000Gb 2005-11-07
  • 打赏
  • 举报
回复
觉得这样写可读性太差了。
uglylourt 2005-11-07
  • 打赏
  • 举报
回复
SB意思!
这是谁写的?
Mr_Yang 2005-11-07
  • 打赏
  • 举报
回复
*f() 应该说明f()是一个返回指针的函数吧!
(*f)() 才说明f是一个指向函数的指针!
majinyi 2005-11-07
  • 打赏
  • 举报
回复
在实际的项目代码中会出现这样的函数吗?
我晕
tdrhsb 2005-11-07
  • 打赏
  • 举报
回复
有的想高等数学里的求导数的样子,想把int *后面的(*f())看出一个整体,然后再对*f()进行分解!
楼下的继续顶!
mark!
zycy 2005-11-07
  • 打赏
  • 举报
回复
这种难懂的代码最好不要出现太多,用typedef之类的替代一下不就很明显了,干什么要这么复杂?……
smltiger 2005-11-07
  • 打赏
  • 举报
回复
一个返回值为int *,参数为void的函数指针
QQ:28286880
u94586813 2005-11-07
  • 打赏
  • 举报
回复
int *(*f())() ,这个式子还真绕,我看是不是可以这么理解

int *g();这个应该很好懂吧!
g又是一个函数指针,是由f返回的,即f返回的是一个函数指针!
jiazichenzhan 2005-11-07
  • 打赏
  • 举报
回复
newbiestar() ,说的对,我分析下,大家提提意见,^_^


int *(*f())()

int *(*f())() 第一步, 找到最左边的标识符 表示“f是一个 ...”
int *(* ())() 第二步,f右边的()优先级高 表示“...的函数”,此处表示“f是个函数”
int *(* )() 第三步,f左边的* 表示“指向...的指针”,f函数的返回值是个指针
int * () 第四步,右边的() 表示“...的函数”,上面指针指向的函数
int * 第五步, int * 表示“指向整型的指针”,上面的函数的返回值是一个指向整型的指针




加载更多回复(15)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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