c语言的函数指针和函数指针数组的简单demo

今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅。

 

 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\n",name);
12 }
13 void func2(const char* name)
14 {
15     printf("this is %s function\n", name);
16 }
17 void func3(const char* name)
18 {
19     printf("this is %s function\n", 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指针\n");
46         return NULL;
47     }
48 }
49 
50 
51 int main()
52 {
53     char input_self[127] = {0};//用来接收用户的输入
54     
55     while (1)
56     {
57         printf("请输入方法几?\n");
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!\n");
69             break;
70         }
71     }
72     system("pause");
73     return 0;
74 }

 

最后是运行界面:

 

猜你喜欢

转载自www.cnblogs.com/dz-study/p/11651392.html