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行代码是没有实际用处的,但是它又是最有用处的,否则,代码就不能正常运行,不信读者可以实施看吧。

  

  

转载于:https://www.cnblogs.com/guochaoxxl/p/6898518.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值