可以使用指向函数的指针作为函数的参数。可以根据作为参数传递的函数调用不同的函数。
示例代码
#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