C语言编程中函数指针的定义及使用
C语言中函数指针的定义:
typedef int (*funcPtr)(int, int)表示定义了一个函数指针funcPtr,这个函数指针只能指向如下:
int add(int, int)、int sub(int, int)、int mul(int, int)、int div(int, int)、int mod(int, int)等类型的函数,这种函数的特点为:
返回类型为int型;函数名称无所谓;函数有两个int型的参数。因此有如下例子:
1 #include <stdio.h> 2 3 int main(int argc, char **argv) 4 { 5 int add(int var1, int var2){ 6 return var1 + var2; 7 } 8 9 int sub(int var1, int var2){ 10 return var1 - var2; 11 } 12 13 int mul(int var1, int var2){ 14 return var1 * var2; 15 } 16 17 int div(int var1, int var2){ 18 return var1 / var2; 19 } 20 21 typedef int (*funcPtr)(int, int); 22 23 funcPtr arrFun[4] = {add, sub, mul, div}; 24 funcPtr cal; 25 26 char sel; 27 int var1; 28 int var2; 29 printf("Please input two numbers: "); 30 scanf("%d %d", &var1, &var2); 31 printf("Plesea input the select in('+', '-', '*', '\'): "); 32 getchar(); 33 scanf("%c", &sel); 34 switch(sel){ 35 case '+': 36 cal = arrFun[0]; 37 break; 38 39 case '-': 40 cal = arrFun[1]; 41 break; 42 43 case '*': 44 cal = arrFun[2]; 45 break; 46 47 case '/': 48 cal = arrFun[3]; 49 break; 50 } 51 printf("You input: %d %c %d = %d", var1, sel, var2, cal(var1, var2)); 52 53 return 0; 54 }
如果第一次输入的为6 3
第二次输入的为+,执行结果为:
Please input two numbers: 6 3
Please input the select in('+', '-', '*', ''): +
You input: 6 + 3 = 9
在这段代码中有个小bug,就是第32行代码是没有实际用处的,但是它又是最有用处的,否则,代码就不能正常运行,不信读者可以实施看吧。
人就像是被蒙着眼推磨的驴子,生活就像一条鞭子;当鞭子抽到你背上时,你就只能一直往前走,虽然连你也不知道要走到什么时候为止,便一直这么坚持着。