请问 typedef void (*(converters[2])) ();是什么意思 ??

MyClass 2003-02-13 12:26:59
typedef void( *fn )()是定义一个函数指针对吗?
那么上面的该如何解释呢,有点不太明了。

请帮忙解释一下,谢谢!
...全文
85 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
MyClass 2003-02-13
  • 打赏
  • 举报
回复
能这样定义吗?
converters func[]=
{
{func_a,func_b},
{func_c,func_d},
{func_e,func_f},
}
bhw98 2003-02-13
  • 打赏
  • 举报
回复
可以给数组元素赋值,如
converters f={NULL, NULL};
f[1]=func_b;
for(int i=0;i<2;i++)
{
if(f[i]) f[i](); // 判断不是空指针,调用之
}
bhw98 2003-02-13
  • 打赏
  • 举报
回复
typedef void (*(converters[2])) ();
是定义一个指针数组,其中有两个元素。看了以下代码就明白了

void func_a()
{
}

void func_b()
{
}

converters func={func_a,func_b); // 声明数组func

func[0](); // 调用func_a
func[1](); // 调用func_b

MyClass 2003-02-13
  • 打赏
  • 举报
回复
我已经弄明白了。谢谢!
bhw98 2003-02-13
  • 打赏
  • 举报
回复
给你另外一段函数指针的例子:

typedef int (*(FUNC[4]))(int,int);

int add(int a,int b) {return a+b;}
int sub(int a,int b) {return a-b;}
int mul(int a,int b) {return a*b;}
int div(int a,int b) {return a/b;}

FUNC func={add,sub,mul,div};
int a=10;
int b=5;
int c[4];

for(int i=0;i<4;i++)
{
c[i]=func[i](a,b);
}
bhw98 2003-02-13
  • 打赏
  • 举报
回复
当然可以,因为converters本身定义了长度为2的一维数组。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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