一.函数指针和回调函数
回调的意思一个函数具有函数指针类型的函数参数,将这个函数指针作为函数参数传到函数里面,当函数执行完之后,再执行通过函数指针传进去的这个函数。这个过程就叫做回调。(或者说通过函数指针调用的函数叫做回调函数)
函数指针最多的一个用处就是回调函数。
二.回调函数的应用
一般开发者会定义一个比较通用的函数,使用者在调用这个函数时需要提供一个函数指针作为参数,在通用的函数中通过函数指针调用使用者开发的函数。
这样做可以提供代码的兼容性。
举例:
#include <stdio.h>
int add(int a,int b)
{
return a + b;
}
int multiply(int a,int b)
{
return a * b;
}
int func(int (*fp)(int a,int b),int c,int d)
{
return fp(c,d);
}
int main(void)
{
int num;
num = func(multiply,1,2);
printf("value is %d\n",num);
num = func(add,1,2);
printf("value is %d\n",num);
return 0;
}
分析:
函数名可以被当作一个常量,它保存了函数的内存地址,而函数的内存地址又存储了函数开始执行的位置。
所以就可以通过函数指针保存函数的地址,也就是指向函数的指针。如
int (*fp)(int a,int b);
fp = add;
所以使用函数指针可以允许我们调用相同形式的函数参数和返回值的不同功能函数。从而增加代码的灵活性。具体应用就是回调函数。