程序用途:提示使用者输入两个数字,然后进行简单的计算(加减乘除和平方)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double Add(double x,double y){return x+y;}
double Sub(double x,double y){return x-y;}
double Mul(double x,double y){return x*y;}
double Div(double x,double y){return x/y;}
//五个函数指针的数组,这些函数需要两个double参数,且返回值也是double
double(*funTable[5])(double,double)={Add,Sub,Mul,Div,pow};
//字符串指针的数组
char *magTable[5]={"Sum","Difference","Product","Quotient","Power"};
int main(){
int i;
double x=0,y=0;
printf("Enter two operands for some arithmetic:\n");
if(scanf("%lf %lf",&x,&y)!=2)
printf("Invalid input.\n");
//使用函数指针数组调用函数
for(i=0;i<5;++i){
printf("%10s:%6.2f\n",magTable[i],funTable[i](x,y));
}
return 0;
}
函数指针数组的应用:
double(*funTable[5])(double,double)={Add,Sub,Mul,Div,pow};,
声明并初始化了一个包含五个函数指针的数组,这些函数都是需要两个double类型参数,且返回值也都是double类型
for(i=0;i<5;++i){
printf(“%10s:%6.2f\n”,magTable[i],funTablei);
}
使用该函数指针数组,其中funTablei表达式会调用函数,这些函数的地址保存在funcTable[i]指针中