在C语言中,回调函数(Callback Function)是一种特殊的函数,它作为参数传递给另一个函数(我们称之为主函数或调用者),并在需要的时候由主函数来调用。回调函数允许主函数在适当的时候执行特定的操作,而不需要知道这些操作的具体细节。
回调函数的一个常见应用是在事件驱动编程中,当某个特定事件发生时(如用户点击按钮或定时器到期),就会调用回调函数来处理该事件。
以下是一个简单的C语言中使用回调函数的例子,这个例子模拟了一个“计算任务”的场景,用户可以定义自己的计算函数(即回调函数),并将其传递给一个“执行器”函数,由“执行器”函数来调用这个计算函数:
c复制代码
| #include <stdio.h>  | |
| // 定义一个回调函数类型  | |
| typedef int (*CalculationFunc)(int a, int b);  | |
| // 这是一个示例的回调函数,用于加法  | |
| int add(int a, int b) {  | |
| return a + b;  | |
| }  | |
| // 这是另一个示例的回调函数,用于乘法  | |
| int multiply(int a, int b) {  | |
| return a * b;  | |
| }  | |
| // 执行器函数,接受一个回调函数作为参数  | |
| int executor(CalculationFunc func, int a, int b) {  | |
| return func(a, b);  | |
| }  | |
| int main() {  | |
| // 使用加法回调函数  | |
| int sum = executor(add, 3, 4);  | |
| printf("The sum is: %d\n", sum);  | |
| // 使用乘法回调函数  | |
| int product = executor(multiply, 3, 4);  | |
| printf("The product is: %d\n", product);  | |
| return 0;  | |
| } | 
在这个例子中,我们定义了一个回调函数类型CalculationFunc,它接受两个int类型的参数并返回一个int类型的结果。然后我们定义了两个回调函数add和multiply,它们分别实现了加法和乘法操作。
executor函数接受一个CalculationFunc类型的参数(即回调函数),以及两个int类型的参数a和b。它调用传入的回调函数来计算a和b的结果,并返回这个结果。
在main函数中,我们分别将add和multiply作为回调函数传递给executor函数,并打印出计算结果。