回调函数理解
目前我想用一种生活场景来描述一下回调函数
我是一个送外卖的,而你是一个吃客,我把我的电话号码给你,你饿了的时候给我打电话,告诉我吃什么送到哪里,我在半个小时内送到,至于我怎么来送,跑啊还是电瓶车哪怕开直升机,你不关心,当然至于你什么时候想吃,为啥想吃这个我也不关心,我只管按时送到。
这里我送外卖的本领就是被回调的函数,你通过我的电话号调用我,完成我所能干的事儿->送外卖,呵。
以下这段代码可以直接在 DEV C++ 上直接运行
// 深刻理解回调函数
// Call Back Function demo .
#include "stdio.h"
//* 回调函数1.数据类型对应 int.
int CallBack1(void* A)
{
int a =0;
a = *(int*)A;
printf("我是回调函数 CallBack1\r\n");
printf("a = %d\r\n",a);
return 0;
}
//* 回调函数1.数据类型对应 char.
int CallBack2(void* A)
{
char a;
a = *(char*)A;
printf("我是回调函数 CallBack2\r\n");
printf("b = %c\r\n",a);
return 0;
}
//* 定义两个函数指针.
int (*CallBackFuntion)(void* A) = &CallBack1;
int (*CallBackFuntion2)(void* A) = &CallBack2;
//* 用这个函数来传入对应的参数,并调用回调函数.
void Test(void * A,int (*pCallBackFuntion)(void*))
{
printf("先干点儿别的\r\n");
printf("回调\r\n");
pCallBackFuntion(A);
printf("回调完毕\r\n");
}
//* Test 测试回调过程.
int main(void)
{
int a =3;
char b = 'b';
Test((void*)&a,CallBackFuntion); // 通过指针.
printf("\r\n");
Test((void*)&b,&CallBack2); // 通过取址符.
}
代码的运行结果:
先干点儿别的
回调
我是回调函数 CallBack1
a = 3
我是回调函数 CallBack2
b = b
回调完毕