易百教程

指向函数的指针

可以使用指向函数的指针作为函数的参数。可以根据作为参数传递的函数调用不同的函数。

示例代码

#include <stdio.h>

// 函数原型
int sum(int, int);
int product(int, int);
int difference(int, int);
int any_function(int(*pfun)(int, int), int x, int y);

int main(void)
{
    int a = 10;                         // 初始化 a 的值
    int b = 5;                          // 初始化 a 的值
    int result = 0;                     // 存储结果值
    int(*pf)(int, int) = sum;          // 指向函数的指针

    // Passing a pointer to a function
    result = any_function(pf, a, b);//

    printf("result = %2d\n", result);

    // 传递函数的指针
    result = any_function(product, a, b);

    printf("result = %2d\n", result);

    printf("result = %2d\n", any_function(difference, a, b));
    system("pause");
    return 0;
}

// 定义一个函数,调用另一个函数
int any_function(int(*pfun)(int, int), int x, int y)
{
    return pfun(x, y);
}

// 定义 sum 函数
int sum(int x, int y)
{
    return x + y;
}
// 定义 product 函数
int product(int x, int y)
{
    return x * y;
}

// 定义 difference 函数
int difference(int x, int y)
{
    return x - y;
}

执行上面示例代码,得到以下结果:

result = 15
result = 50
result =  5