新闻  |   论坛  |   博客  |   在线研讨会
函数指针
xinjinlong | 2011-08-16 14:32:34    阅读:1656   发布文章

最近写驱动,中间用到了函数指针,恰好一个哥们让我给解释如何使用函数指针,我就给他了下面这个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};

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
五湖四海皆朋友
最近文章
浅谈MIPS的MMU(二)
2016-08-16 19:33:41
浅谈MIPS的MMU(一)
2016-05-05 10:55:06
推荐文章
最近访客