今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅。
1 #include <cstdio> 2 #include <Windows.h> 3 4 typedef void(*myFun)(const char*);//这里定义的一个函数类型(返回值为void,参数为const char*),类型名为myFun,使用见第28行 5 6 void(*func)(const char* name); //声明了一个函数指针,指针名为func 7 8 //下面定义的3个函数,就函数名不一样,函数体是一样的,这里只是方便演示,意思一下而已。 9 void func1(const char* name) 10 { 11 printf("this is %s function ",name); 12 } 13 void func2(const char* name) 14 { 15 printf("this is %s function ", name); 16 } 17 void func3(const char* name) 18 { 19 printf("this is %s function ", name); 20 } 21 22 //定义一个函数指针数组(返回值为void,参数为const char*的函数指针(名)都可以放在这数组里) 23 void(*fun[])(const char* name) = 24 { 25 func1,func2,func3 26 }; 27 28 //定义一个选择使用哪个函数的函数,返回值是函数指针 29 myFun choiceFun(const char* name) //如果没用第三行的typedef定义,这里应该这样写:void (*choiceFun(const char* name))(const char*){....函数体} 30 { 31 if (0 == strcmp(name, "1")) 32 { 33 return fun[0]; 34 } 35 else if (0 == strcmp(name, "2")) 36 { 37 return fun[1]; 38 } 39 else if (0 == strcmp(name, "3")) 40 { 41 return fun[2]; 42 } 43 else 44 { 45 printf("未找到相应函数,将返回null指针 "); 46 return NULL; 47 } 48 } 49 50 51 int main() 52 { 53 char input_self[127] = {0};//用来接收用户的输入 54 55 while (1) 56 { 57 printf("请输入方法几? "); 58 if (scanf("%s", &input_self) != EOF) //按下ctrl+z就代表结束 59 { 60 func = choiceFun(input_self); //根据用户的输入来决定返回哪一个函数 61 if (func != NULL) //确认函数指针有效,才能执行! 62 { 63 func(input_self); 64 } 65 } 66 else 67 { 68 printf("您选择了退出,bye! "); 69 break; 70 } 71 } 72 system("pause"); 73 return 0; 74 }
最后是运行界面: