关于 typedef关键字的灵活运用,可以大大减少代码量
#include <stdio.h>
//函数声明
double add1(double x,double y);
double add2(double x,double y);
double add3(double x,double y);
double add4(double x,double y);
typedef double(*f)(double x,double y);
int main(void)
{
/*
使用 typedef 给类型取一个别名
一般使用typedef unsigned char uin8_t;
是给unsigned char 取一个 uin8_t的别名
那么我们想给函数指针取一个别名
使用typedef double(*f)(double x,double y);
的意思就是给double(* )(double x,double y) 取一个别名f
*/
f py[4] = {add1,add2,add3,add4}; //可以看作是double (*p[4])(double x,double y);
//打印四个函数的返回值
printf("%lf\n",py[0](1,1));
printf("%lf\n",py[1](2,2));
printf("%lf\n",py[2](3,3));
printf("%lf\n",py[3](4,4));
return 0;
}
double add1(double x,double y)
{
return (x+y);
}
double add2(double x,double y)
{
return (x+y);
}
double add3(double x,double y)
{
return (x+y);
}
double add4(double x,double y)
{
return (x+y);
}