- 函数指针的概念;
- 当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数;
- 为了维护类的完整性,我们用类的静态成员函数来做回调函数;
- 把调用者与被调用者分开。调用者不关心谁是被调用者;
- 可以做针对多种类型的排序功能函数、通知机制;
typedef struct DEV
{
int status;
void (*callBackFunc)();
}Dev;
Dev Device;
// struct Device
// {
// int status;
// void (*callBackFunc)(); // 指针,其分配空间确定
// }Device;
void addCallBackFunc(void (*userCallBackFunc)(int status))
{
Device.callBackFunc = userCallBackFunc;
}
void run()
{
Device.status = 10;
if(Device.status == 10)
{
if(Device.callBackFunc != NULL)
{
Device.callBackFunc(Device.status);
}
}
}
void callBack(int status)
{
printf("CallBack\n");
printf("status = %d\n", status);
}
void main(void)
{
addCallBackFunc(callBack);
run();
}
int function(int a, int _)
{
return a;
}
int add(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
typedef int(*Q)(int, int);
// void func(int, int, Q P)
void func(int x, int y, int(*p)(int, int))
{
int a = p(x, y);
printf("%d\n", a);
}
int main()
{
func(1, 2, add);
func(10, 5, minus); // 多态
func(-1, NULL, function);
return 0;
}