匿名用户
1级
2010-04-30 回答
//将你的程序进行简单修改,有一些细节上的不足之处。改过之后能在gcc编译运行。
//如果没有预备知识,也许注释难以看懂。建议看K&R 以了解函数指针和指针数组
#include
int execute(int x,int y,int (*fun)(int x, int y));//函数声明
/*
其中int (*fun)(int x, int y)为声明第三个参数为指向函数的指针,该函数返回int,有两个整型参数。
*/
int main()
{
int fun1(int x, int y);//函数声明
int fun2(int x, int y);//函数声明
int fun3(int x, int y);//函数声明
int fun4(int x, int y);//函数声明
int (*function[4])(int x, int y);//定义function为指向函数指针的数组。
int a=10,b=5,i;
function[0]=fun1;//将函数指针赋予数组元素
function[1]=fun2;
function[2]=fun3;
function[3]=fun4;
for(i=0;i<4;i++)
printf("fun no.%d->%d\n",i+1,execute(a,b,function[i]));
return 0;
}
int execute(int x,int y,int (*fun)(int x, int y))
{
return (*fun)(x,y);//利用函数指针调用函数。
}
int fun1(int x, int y)
{
return(x+y);
}
int fun2(int x,int y)
{
return(x-y);
}
int fun3(int x,int y)
{
return(x*y);
}
int fun4(int x,int y)
{
return(x/y);
}
执行结果:表示执行每个函数的结果。
fun no.1->15
fun no.2->5
fun no.3->50
fun no.4->2