函数指针——回调函数
回调函数
在 C 语言中,回调函数(Callback Function)是一种特殊的函数,它可以作为参数传递给另一个函数,并在特定事件发生或条件满足时被调用。这种机制允许我们在不修改主函数代码的情况下,通过传入不同的回调函数来改变程序的行为,增强了代码的灵活性和可扩展性。
回调函数的实现依赖于函数指针,以下是一个简单的示例:
#include <stdio.h>// 回调函数的原型
typedef void (*Callback)(int);// 执行回调的函数
void process(int data, Callback callback) {printf("Processing data: %d\n", data);// 调用回调函数callback(data);
}// 回调函数1:将数据翻倍
void doubleData(int num) {printf("Doubled data: %d\n", num * 2);
}// 回调函数2:将数据平方
void squareData(int num) {printf("Squared data: %d\n", num * num);
}int main() {int data = 5;// 使用不同的回调函数printf("First processing:\n");process(data, doubleData);printf("\nSecond processing:\n");process(data, squareData);return 0;
}
在这个例子中:
首先定义了一个函数指针类型
Callback
,它指向一个接受int
参数且无返回值的函数。process
函数接受两个参数:一个int
类型的数据和一个Callback
类型的函数指针。在process
函数内部,会调用传入的回调函数。doubleData
和squareData
是两个符合Callback
类型的函数,它们将作为回调函数使用。在
main
函数中,我们调用process
函数并传入不同的回调函数,从而实现了对相同数据的不同处理方式。
回调函数在 C 语言中有着广泛的应用,例如:
事件处理系统
排序算法(如 qsort 函数)
异步操作
信号处理
通过回调函数,我们可以实现类似于面向对象编程中的 "策略模式",使代码更加模块化和可维护。