本案例基于vc6.0的一个简单的测试c语言函数指针数组的简单案例,代码放置如下:
#include<stdio.h>
int fun1()
{
int a=4,b=5;
int c;
c=a+b;
return c;
}
int fun2()
{
int a=3,b=2;
int c;
c=a+b;
return c;
}
int fun3()
{
int a=6,b=7;
int c;
c=a+b;
return c;
}
void main()
{
int (*pf[3])(); //定义了一个函数指针数组
int i;
pf[0]=fun1;
pf[1]=fun2;
pf[2]=fun3;
for(i=0;i<3;i++)
{
printf("%d\n",(*pf[i])());
}
}
输出结果如下:
我们把主函数函数指针数组的表达方式换一种,代码贴下如下:
void main()
{
int (*pf[3])()={fun1,fun2,fun3};
int i;
for(i=0;i<3;i++)
{
printf("%d\n",(*pf[i])());
}
}
所运行的程序正确,并且运行结果与上述的保持一致;
把子函数都换成void 类型,那么主函数里面的函数指针数组类型int,void都可以,运行结果不变,代码贴下如下:
#include<stdio.h>
void fun1()
{
int a=4,b=5;
int c;
c=a+b;
printf("c=%d\n",c);
// return c;
}
void fun2()
{
int a=3,b=2;
int c;
c=a+b;
printf("c=%d\n",c);
// return c;
}
void fun3()
{
int a=6,b=7;
int c;
c=a+b;
printf("c=%d\n",c);
// return c;
}
void main()
{
void (*pf[3])()={fun1,fun2,fun3};//void类型,int类型都可以
int i;
for(i=0;i<3;i++)
{
(*pf[i])();
//printf("%d\n",(*pf[i])());
}
}
19/3/6