函数指针实战

1、本次演示的是用函数指针指向不同的函数来实现同一个调用执行不同的结果。

2、补充点:Linux命令行默认是行缓冲的,意思就是说当我们程序printf输出的时候,Linux不会一个字一个字的输出我们的内容,而是将其缓冲起来放在缓冲区等一行准备完了再一次性把一行全部输出出来(为了效率)。Linux判断一行有没有完的依据就是换行符‘\n’(windows中是\r\n,Linux中是\n,ios中是\r)。也就是说你printf的再多,只要没遇到\n(或者是程序终止,或者是缓冲区满)都不会输出而会不断缓冲,这个时候你是看不到内容输出的。因此在每个printf打印语句后面一定要加\n,否则可能导致误判。

3实例代码演示:

 

 1 #include <stdio.h>
 2 
 3 int add(int a, int b);
 4 int sub(int a, int b);
 5 int mul(int a, int b);
 6 int dir(int a, int b);
 7 
 8 typedef int (*pFunc)(int ,int);
 9 
10 int main(void)
11 {
12     pFunc p1 = NULL;
13     int a = 0, b = 0;
14     char c = 0;
15     printf("请输入要运算的数字:\n");
16     scanf("%d %d",&a, &b);
17     printf("请输入运算法则: + - * / \n");
18     do
19     {
20         scanf("%c",&c);
21     }while(c == '\n');
22     switch(c)
23     {
24         case '+':
25             p1 = add;
26             break;
27         case '-':
28             p1 = sub;
29             break;
30         case '*':
31             p1 = mul;
32             break;
33         case '/':
34             p1 = dir;
35             break;            
36     }
37     printf("%d\n",p1(a,b));
38     return 0;
39 }
40 int add(int a, int b)
41 {
42     return a + b;
43 }
44 int sub(int a, int b)
45 {
46     return a - b;
47 }
48 int mul(int a, int b)
49 {
50     return a * b;
51 }
52 int dir(int a, int b)
53 {
54     return a / b;
55 }

 

posted @ 2019-08-20 16:25  志瞳道合  阅读(175)  评论(0编辑  收藏  举报