经典精炼函数指针数组的求解

辧聪 辧聪 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <stdio.h>
void a(int page);
void b(void);
void c(void);
void d(void);

int *op[5]={
(void *)a,
(void *)a,
(void *)b,
(void *)c,
(void *)d
};
void a(int page)
{if (page == 0) printf("A\n");
else printf("a\n"); }
void b(void) {printf("b\n");}
void c(void) {printf("c\n");}
void d(void ) {printf("d\n");}

int main()
{
int j=1;
void (*f)();
f=(void *)op[j];
(*f)(j);
getchar();
}

如以上程序问题1:int *op[5] 我作了其他变换 **op op[][] 等都不可以
而且我用 int (*op[5])() 也报错
问题2 int *op[5]到底是什么,好像不是函数指针数组
问题3 main里 为什么可以这么赋值并调用 j=0 A j=1,a 其他b, c,
f(j)这里 j这么可以传进去? 其定义式void (*f)()里面没参数.
问题4:int *op[5]={(void *) 前面是int 后面是 void 怎么没警告。其后(void *)没加也报错警告
第5点我对函数指针数组有一定认识.但这个我真的不太清楚了。
求一个高手一步步分析。



...全文

相关推荐

评论 12
收藏 已收藏
分享
返回顶部
辧聪
C语言 70,039 成员 243,237 内容