这个函数例子来自于网络,确认过OK(具体是谁忘记了)。
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。
如:void (*pFunction)(int*) 定义一个返回值为void, 带一个int 型参数的函数指针
看下面的例子较明白
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
void (*p)(); //定义一个void 型,不带参数的函数指针
void func1()
{
/* do something */
printf("From func1(), Hello World!/n");
}
void caller(void(*ptrfunc1)())
{
ptrfunc1(); /* 调用ptr指向的函数 */
}
bool func2(int* t_i)
{
/* do something */
printf("From func2() = %d, Hello World!/n", (*t_i)++);
return true;
}
void caller2(bool (*ptrfunc2)(int*), int *i)
{
ptrfunc2(i); /* 调用ptr指向的函数 */
}
int main(int argc, char* argv[])
{
printf("From main(), Hello World!/n");
printf("/n");
//无参数调用
p = func1; /* 传递函数地址地址 */
caller(p); /* 传递函数地址到调用者 */
//有参数调用
int i = 0;
for (int j = 0; j < 10; j++)
{
caller2(func2, &i); //* 传递函数地址到调用者 */
}
caller2(func2, &i); /* 传递函数地址到调用者 */
printf("/n");
printf("From main(), Hello World!/n");
getchar();
return 0;
}