最近写驱动,中间用到了函数指针,恰好一个哥们让我给解释如何使用函数指针,我就给他了下面这个case,让他自己的思路也飞一会:
这个例子也是很简单的,就是计算加减乘除,case如下:
#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 (*funcTable[5])(double, double)={Add, Sub, Mul, Div, pow};
char *msgTable[5] = {"Sum", "Difference", "Product", "Quotient", "Power"};
int main()
{
int i;
double x = 0, y = 0;
printf("Enablr 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", msgTable[i], funcTable[i](x, y));
}
return 0;
}
后来想想,还是正规一些,增加程序的可读性,这一定义funcTable比较好看:
typedef double func_t (double, double);
func_t *funcTable[5] = { Add, Sub, Mul, Div, pow};
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。