#include <stdio.h>
// 加法函数
int add(int a, int b) {
return a + b;
}
// 减法函数
int subtract(int a, int b) {
return a - b;
}
// 计算函数
int calculate(int a, int b, int (*op)(int, int)) {
return op(a, b);
}
int main() {
int num1 = 5, num2 = 3;
// 使用add函数指针调用calculate
int resultAdd = calculate(num1, num2, add);
printf("加法结果: %d\n", resultAdd);
// 使用subtract函数指针调用calculate
int resultSubtract = calculate(num1, num2, subtract);
printf("减法结果: %d\n", resultSubtract);
return 0;
}
函数指针运算原理及动态调用说明
- 函数指针定义:在C语言中,函数名实际上是函数的入口地址,函数指针是一种指向函数的指针变量。
int (*op)(int, int)
定义了一个名为 op
的函数指针,它指向的函数接受两个 int
类型参数并返回一个 int
类型值。
- 传递函数指针:在
calculate
函数定义中,将函数指针 op
作为参数传递。在 main
函数中调用 calculate
时,分别传入 add
和 subtract
函数名,这里函数名隐式地转换为函数指针。
- 动态调用:在
calculate
函数内部,通过 op(a, b)
调用实际的函数。由于 op
可以指向不同的函数(如 add
或 subtract
),这种方式实现了函数的动态调用,即根据传入的不同函数指针,calculate
函数可以执行不同的运算逻辑。这在程序需要根据不同条件选择不同操作时非常有用,增加了程序的灵活性和可扩展性。