C语言中typedef函数指针用法

原帖在这里:http://blog.sina.com.cn/s/blog_5e71ee700100fo13.html

我把里面的代码整理了一下,如下:

 1 #include <stdio.h>
 2 
 3 int add(int a, int b)
 4 {
 5     return a + b;
 6 }
 7 int sub(int a, int b)
 8 {
 9     return a - b;
10 }
11 int mul(int a, int b)
12 {
13     return a * b;
14 }
15 int div(int a, int b)
16 {
17     return b? a/b : -1;
18 }
19 
20 typedef int (*FP_CALC)(int, int);
21 /*typedef的作用是用FP_CALC代表int (*)(int,int),
22   FP_CALC calc_func(char op)相当于int (*calc_func(char op))(int, int),
23   这是一个函数指针,返回值是一个函数的地址,
24   这个函数有两个int形参且返回值是int*/
25 FP_CALC calc_func(char op)
26 {
27     switch (op)
28     {
29     case '+': return add;
30     case '-': return sub;
31     case '*': return mul;
32     case '/': return div;
33     default:
34         return NULL;
35     }
36 }
37 
38 int calc(int a, int b, char op)
39 {
40     FP_CALC fp = calc_func(op); 
41     /*FP_CALC fp相当于int (*fp)(int, int)*/
42     if (fp) 
43         return fp(a, b);
44     else 
45         return -1;
46 }
47 void main()
48 {
49     int a = 100, b = 20;
50     printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+'));
51     printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-'));
52     printf("calc(%d, %d, %c) = %d\n", a, b, '*', calc(a, b, '*'));
53     printf("calc(%d, %d, %c) = %d\n", a, b, '/', calc(a, b, '/'));
54 }

运行结果如下:

posted on 2013-07-04 16:09  万里-先生  阅读(1788)  评论(0编辑  收藏  举报

导航