本文有xhz1234(徐洪志)编写,转载请注明出处。
http://blog.csdn.net/xhz1234/article/details/36635083
作者:徐洪志
近期阅读Linux-内核代码。发现非常多地方使用了函数指针,遂自己写一个演示样例程序。以供參阅:
#include <stdlib.h> #include <stdio.h> #define ADDONE 0 #define MINUSONE 1 #define S_OK 0 #define S_ERR -1 typedef int(*dir_fn)(int *data); //函数指针 //实际函数1 int add_func(int *data) { (*data)++; return S_OK; } //实际函数2 int minus_func(int *data) { (*data)--; return S_OK; } //核心:依据參数cmd,获取相应的func dir_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> "); scanf("%d", &cmd); fn = lookup_ctl(cmd); fn(&data); printf("Result is: %d ", data); return 0; }
本文有xhz123(徐洪志)编写,转载请注明出处。
作者:徐洪志