Let's go!!!!!
分类: LINUX
2015-07-16 23:05:33
如果参数是一个函数指针,调用者可以传递一个函数的地址给实现者,让实现者去调用它,这称为回调函数。
回调函数示例:void func(void (*f)(void *), void *p);
调用者 |
实现者 |
|
|
以下是一个简单的例子。实现了一个repeat_three_times函数,可以把调用者传来的任何回调函数连续执行三次。
#include <stdio.h>
typedef void (*callback_t)(void *);
void say_hello(void *str)
{
printf("Hello %s\n", (const char *)str);
}
void count_numbers(void *num)
{
int i = 0;
for(i=1; i<=(int)num; i++)
printf("%d ", i);
putchar('\n');
}
void repeat_three_times(callback_t f, void *para)
{
f(para);
f(para);
f(para);
}
int main(void)
{
repeat_three_times(say_hello, "Guys");
repeat_three_times(count_numbers, (void *)4);
return 0;
}