易百教程

指向函数的指针数组

可以创建一个指向函数的指针数组。要声明函数指针数组,请将数组维度放在函数指针数组名称后面,例如:

int (*pfunctions[10]) (int);

这声明了一个带有十个元素的数组:pfunctions
此数组中的每个元素都可以存储函数的地址,返回类型为int,类型为int

示例代码

#include <stdio.h>

// 函数原型
int sum(int, int);
int product(int, int);
int difference(int, int);

int main(void)
{
    int a = 10;                         // 初始化a的值
    int b = 5;                          // 初始化b的值
    int result = 0;                     // 存储结果值的变量
    int(*pfun[3])(int, int);           // 函数指针数组声明

    //初始化指针
    pfun[0] = sum;
    pfun[1] = product;
    pfun[2] = difference;

    // 执行指向的每个函数
    for (int i = 0; i < 3; ++i)
    {
        result = pfun[i](a, b);           // 通过指针调用该函数
        printf("result = %2d\n", result); // 显示结果集
    }

    // 通过表达式中的指针调用所有三个函数
    result = pfun[1](pfun[0](a, b), pfun[2](a, b));
    printf("The product of the sum and the difference = %2d\n", result);
    system("pause");
    return 0;
}
// 函数的实现
int product(int x, int y)
{
    return x * y;
}

// 函数的实现
int difference(int x, int y)
{
    return x - y;
}
int sum(int x, int y)
{
    return x + y;
}

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

result = 15
result = 50
result =  5
The product of the sum and the difference = 75