C语言编程中函数指针的定义及使用

  C语言中函数指针的定义:

  typedef int (*funcPtr)(int, int)表示定义了一个函数指针funcPtr,这个函数指针只能指向如下:

  int add(int, int)、int sub(int, int)、int mul(int, int)、int div(int, int)、int mod(int, int)等类型的函数,这种函数的特点为:

  返回类型为int型;函数名称无所谓;函数有两个int型的参数。因此有如下例子:  

 1 #include <stdio.h>                                                                       
 2 
 3 int main(int argc, char **argv)
 4 {
 5     int add(int var1, int var2){
 6         return var1 + var2;
 7     }
 8 
 9     int sub(int var1, int var2){
10         return var1 - var2;
11     }
12 
13     int mul(int var1, int var2){
14         return var1 * var2;
15     }
16 
17     int div(int var1, int var2){
18         return var1 / var2;
19     }
20 
21     typedef int (*funcPtr)(int, int);
22 
23     funcPtr arrFun[4] = {add, sub, mul, div};
24     funcPtr cal;
25 
26     char sel;
27     int var1;
28     int var2;
29     printf("Please input two numbers: ");
30     scanf("%d %d", &var1, &var2);
31     printf("Plesea input the select in('+', '-', '*', '\'): ");
32     getchar();
33     scanf("%c", &sel);
34     switch(sel){
35         case '+':
36             cal = arrFun[0];
37             break;
38 
39         case '-':
40             cal = arrFun[1];
41             break;
42 
43         case '*':
44             cal = arrFun[2];
45             break;
46 
47         case '/':
48             cal = arrFun[3];
49             break;
50     }
51     printf("You input: %d %c %d = %d", var1, sel, var2, cal(var1, var2));
52 
53     return 0;
54 }

  如果第一次输入的为6  3

  第二次输入的为+,执行结果为:

  Please input two numbers: 6 3
  Please input the select in('+', '-', '*', ''): +
  You input: 6 + 3 = 9
  在这段代码中有个小bug,就是第32行代码是没有实际用处的,但是它又是最有用处的,否则,代码就不能正常运行,不信读者可以实施看吧。

  

  

posted @ 2017-05-24 13:34  叕叒双又  阅读(1976)  评论(0编辑  收藏  举报