经典精炼函数指针数组的求解
#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点我对函数指针数组有一定认识.但这个我真的不太清楚了。
求一个高手一步步分析。
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点我对函数指针数组有一定认识.但这个我真的不太清楚了。
求一个高手一步步分析。
...全文
相关推荐
彻底了解指针数组,数组指针以及函数指针
本文将详细解释指针数组、数组指针以及函数指针的概念及其应用。#### (1)指针数组指针数组是指数组中的每个元素都是指针类型的数组。
函数指针和函数指针数组的使用
二、函数指针数组的概念函数指针数组是一种特殊的数组,它的每个元素都是一个函数指针。函数指针数组可以保存多个函数指针,以便在需要时调用相应的函数。
指针进阶之函数指针和函数指针数组
函数指针数组是指向函数的指针数组。
彻底理解指针,指针数组和数组指针,指针函数和函数指针
### 彻底理解指针,指针数组和数组指针,指针函数和函数指针#### 一、基础知识在计算机编程中,指针是一个非常重要的概念,尤其是在C/C++这样的语言中更是如此。
函数指针数组
而在实际应用中,有时候我们需要处理一组具有相同功能或接口的函数,这时就可以使用函数指针数组来实现。函数指针数组是一种特殊的数组类型,它的元素是函数指针。


