函数指针实战

Posted jiangtongxue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数指针实战相关的知识,希望对你有一定的参考价值。

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 

 

以上是关于函数指针实战的主要内容,如果未能解决你的问题,请参考以下文章

RTOS训练营课程学习方法和C语言知识(指针结构体函数指针链表)和学员问题

RTOS训练营课程学习方法和C语言知识(指针结构体函数指针链表)和学员问题

RTOS训练营课程学习方法和C语言知识(指针结构体函数指针链表)和学员问题

Golang入门到项目实战 | golang指针

C++基础——C++面向对象之类对象与继承基础总结(类和对象概念构造函数与析构函数this指针继承)

C++函数指针与成员函数指针