首先搞明白一个问题,什么是回调函数?
相信大家肯定在网上看了很多相关的资料,我承认我当初是看了不少,不过看完感觉迷迷糊糊的,没有一个直观的认识。现在我来总结一下:被函数调用的函数就是回调函数。
比如函数A调用了函数B,那么B就是回调函数。
下面给大家一个最简单的例子:
#include <stdio.h>
#include <stdlib.h>
int getSum(int a ,int b)
{
return a+b;
}
int getSumCallBack(int (*gf)(int a ,int b))
{
int i = 0;
int acc;
for (;i<5;i++)
{
int sum = gf(i,i+1);
printf("%d\n",sum);
}
return 0;
}
void main()
{
getSumCallBack(getSum);
system("pause");
}
在上面的例子中,int getSum(int a ,int b)就是回调函数,它被int getSumCallBack(int (*gf)(int a ,int b))函数调用。
需要注意的一点就是int getSumCallBack函数的原型声明。大家可以看到该函数的参数(int (*gf)(int a ,int b)),其中第一个int为回调函数的返回值类型,中间的(*gf)为回调函数声明,后面括号里的为回调函数的参数列表。
希望可以帮大家揭开回调函数神秘面纱的一角。