利用函数指针,就可以实现函数注册和回调
#include <stdio.h>
int max(int x,int y){return (x>y? x:y);}
int min(int x,int y){return (x<y? x:y);}
int main()
{
int (*callback)(int, int);
int a=1, b=2, c;
callback = max; // 或者 callback = &max
c = (*callback)(a, b); // 或者 callback(a,b)
printf("a=%d, b=%d, max=%d\n", a, b, c);
callback = min;
c = (*callback)(a, b);
printf("a=%d, b=%d, min=%d\n", a, b, c);
getchar();
return 0;
}
运行结果如下:
函数指针是指向函数的指针变量。 正如其他指针变量可以指向整型变量、字符型、数组一样,区别是函数指针指向的是函数地址。什么是函数地址,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样。
参考:http://blog.csdn.net/mycwq/article/details/9327455