函数指针的概念
认识回调函数之前,我们要先了解函数指针的概念。函数指针是一个指针,它是指向函数的
整形指针指向整型变量
数组指针指向数组
那么函数指针当然是指向函数
下面是函数指针的代码
int max(int a, int b)
{
return a > b ? a : b;
}
int main()
{
int a, b;
printf("输入两个数并比较\n");
scanf("%d%d",&a,&b);
//函数指针--故名思意 指向函数的指针,是个指针
int(*p)(int a, int b) = max;
int max1=(*p)(a, b);
printf("最大值%d",max1);
}
回调函数的概念
回调函数是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。
回调函数不是由该函数的“实现方”直接调用的而是在特定的事件或条件发生时由另一方调用的,用对于该事件或条件进行相应。
解释:
在我看来,回调函数说白了就是函数指针的一种用法而已
int first(int b)
{
printf("a=%d\n",b);
return 0;
}
int second(int b)
{
printf("b=%d\n",b);
return 0;
}
int third(int b)
{
printf("c=%d\n",b);
return 0;
}
int diao(int y,int (*p)(int))/*这里就是吧first,second,third函数的指针(地址)
作为参数传给另一个函数diao*/
{
printf("输入\n");
p(y);//当这个指针 p 用来调用其所指的first ...third则称之为回调函数
printf("结束");
return 0;
}
int main()
{
float a = 2;
int b = 4;
int c = 6;
diao(a,first);//写时注意first函数类型不与函数指针类型冲突
diao(b,second);
diao(c, third);
}
用法见下一章(C++学习中如果用说的不对的地方希望大家可以指出来,纠正我。)