回调函数_C语言
- 定义
一般情况下,当程序跑起来时会调用预备好的函数。但有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用以完成目标任务。这种被当做参数传递的函数,称为回调函数(callback function)。
- 例程
#include <stdio.h>
void print1(int i){
printf("%d\n",i);
}
void for_each(int *a,void(*pf)()){ //pf指向被回调函数地址
for(int i=0;i<4;i++){
(*pf)(*(a+i)); // (*pf)是函数名即print1,*(a+i)是函数的参数。等价于print1(*(a+i));
}
}
int main(){
int arr[]={1,2,3,4};
for_each(arr,print1); //两个疑问:for_each、print1分别是什么
return 0;
}
由此可知,函数名不加括号是函数地址,被回调的函数做为参数传递。