【看到哪里写到哪里】C的指针-3(函数指针)

发布于:2025-06-03 ⋅ 阅读:(23) ⋅ 点赞:(0)
//定义四个函数 加减乘数
int add(int a, int b)
{
    return a + b;
}
int subtract(int a, int b)
{
    return a - b;
}
int multiply(int a, int b)
{
    return a * b;
}
int divide(int a, int b)
{
    if (b == 0)
    {
        printf("Error: devision by ZERO!");
        return 0;
    }
    return a / b;
}
//定义指针函数
typedef int (*MathOperation)(int, int);

int testFuncPtr()
{
    //函数指针,申请四个指针;其实也可以直接用数组,不过,实际开发中,用指针的场景更多些。
    MathOperation *mathOperation;
    mathOperation = (MathOperation *)malloc(4 * sizeof(MathOperation));
    //给函数指针赋值
    mathOperation[0] = &add;
    mathOperation[1] = &subtract;
    mathOperation[2] = &multiply;
    mathOperation[3] = ÷
    int a = 10;
    int b = 2;
    for (int i = 0; i < 4; i++)
    {
        //调用函数指针指向不同的函数
        int result = mathOperation[i](a, b);
        switch (i)
        {
        case 0:
        case 1:
        case 2:
        case 3:
            //输出结果,这里有个小技巧
            printf("%d %c %d = %d\n", a, "+-*/"[i], b, result);
            break;
        default:
            break;
        }
    }
    free(mathOperation);
}


输出结果:
10 + 2 = 12
10 - 2 = 8
10 * 2 = 20
10 / 2 = 5

还是要看基础概念:C程序中,每个函数肯定处于内存中的某个位置,所以指向这个位置,就可以用指针来做啊。这就是函数指针的存在基础!

上面是一个简单的例子,

1、定义四个函数做加减乘除;

2、定义指针函数

3、定义一个函数指针数组,赋值成四个函数的地址;

4、做四个计算,输出结果内容;

这个例子,对理解函数指针和指针函数,有基础的、实际的意义。

注:这里的【"+-*/"[i]】,其实也是指针应用,回头单独讨论

            //输出结果,这里有个小技巧
            printf("%d %c %d = %d\n", a, "+-*/"[i], b, result);


网站公告

今日签到

点亮在社区的每一天
去签到