在 C 语言 中,回调 函数 就是一个通过 函数指针 调用的函数。如果你把函数的指针(地址)作为 参数 传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
void (*pFunc)(int ,int, double) = NULL;
我们定义了一个回调函数 pFunc,其返回值类型为 void,接受两个 int 类型和一个 double 类型的参数。
typedef void (*pFunc)(int, int, double);
我们使用了 typedef 定义了一个回调函数 pFunc,其返回值类型为 void,接受两个 int 类型和一个 double 类型的参数。
定义一个回调函数,并调用
#include <stdio.h>
int sum(int num1, int num2)
{
return num1 + num2;
}
int sub(int num1, int num2)
{
return num1 - num2;
}
int mul(int num1, int num2)
{
return num1 * num2;
}
int div(int num1, int num2)
{
return num1 / num2;
}
typedef int (*pFunc)(int a,int b);
int func10(int num, pFunc func)
{
return func(num, 10);
}
int main()
{
printf("嗨客网(www.haicoder.net)\n\n");
int a = 1024;
int retSum = func10(a, sum);
int retSub = func10(a, sub);
int retMul = func10(a, mul);
int retDiv = func10(a, div);
printf("retSum = %d, retSub = %d, retMul = %d, retDiv = %d\n", retSum, retSub, retMul, retDiv);
return 0;
}
程序运行后,控制台输出如下图所示:
我们首先,定义了四个函数,分别为 sum、sub、mul 和 div,接着,我们使用了 typedef 定义了一个函数指针,该函数指针接受两个 int 类型的参数,返回一个 int 类型的返回值。
最后,我们再次定义了一个函数,该函数,接受一个 int 类型的值和一个函数指针做为参数,最后,我们在 main 函数里,通过在 func10 函数里面传入不同的函数,实现了不同的功能。
在 C 语言中,回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为 参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。