可以创建一个指向函数的指针数组。要声明函数指针数组,请将数组维度放在函数指针数组名称后面,例如:
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