本文有xhz1234(徐洪志)编写,转载请注明出处。
作者:徐洪志
近期阅读Linux-内核代码。发现非常多地方使用了函数指针,遂自己写一个演示样例程序。以供參阅:
#include#include #define ADDONE 0#define MINUSONE 1#define S_OK 0#define S_ERR -1typedef int(*dir_fn)(int *data); //函数指针//实际函数1int add_func(int *data){ (*data)++; return S_OK;}//实际函数2int minus_func(int *data){ (*data)--; return S_OK;}//核心:依据參数cmd,获取相应的funcdir_fn lookup_ctl(int cmd){ dir_fn fn = NULL; switch(cmd) { case ADDONE: fn = add_func; break; case MINUSONE: fn = minus_func; break; default: break; } return fn;}int main(void){ int data = 100; int cmd = -1; dir_fn fn = NULL; printf("Input the cmd<0 add, 1 minus>\n"); scanf("%d", &cmd); fn = lookup_ctl(cmd); fn(&data); printf("Result is: %d\n", data); return 0;}
本文有xhz123(徐洪志)编写,转载请注明出处。
作者:徐洪志