打印
[DSP编程]

函数指针实战

[复制链接]
444|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蒋博1026|  楼主 | 2019-10-27 17:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、本次演示的是用函数指针指向不同的函数来实现同一个调用执行不同的结果。
2、补充点:Linux命令行默认是行缓冲的,意思就是说当我们程序printf输出的时候,Linux不会一个字一个字的输出我们的内容,而是将其缓冲起来放在缓冲区等一行准备完了再一次性把一行全部输出出来(为了效率)。Linux判断一行有没有完的依据就是换行符‘\n’(windows中是\r\n,Linux中是\n,ios中是\r)。也就是说你printf的再多,只要没遇到\n(或者是程序终止,或者是缓冲区满)都不会输出而会不断缓冲,这个时候你是看不到内容输出的。因此在每个printf打印语句后面一定要加\n,否则可能导致误判。
3、实例代码演示:
#include <stdio.h>
int add(int a, int b);
int sub(int a, int b);
int mul(int a, int b);
int dir(int a, int b);
typedef int (*pFunc)(int ,int);
int main(void)
{
    pFunc p1 = NULL;
    int a = 0, b = 0;
    char c = 0;
    printf("请输入要运算的数字:\n");
    scanf("%d %d",&a, &b);
    printf("请输入运算法则: + - * / \n");
    do
    {
        scanf("%c",&c);
    }while(c == '\n');
    switch(c)
    {
        case '+':
            p1 = add;
            break;
        case '-':
            p1 = sub;
            break;
        case '*':
            p1 = mul;
            break;
        case '/':
            p1 = dir;
            break;            
    }
    printf("%d\n",p1(a,b));
    return 0;
}
int add(int a, int b)
{
    return a + b;
}
int sub(int a, int b)
{
    return a - b;
}
int mul(int a, int b)
{
    return a * b;
}
int dir(int a, int b)
{
    return a / b;
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

323

主题

1820

帖子

18

粉丝