函数指针数组的使用:转移表(表驱动)->表驱动的名称出自《code complete》中文《代码大全》
对于一个函数来说,条件或循环语句越多,函数就越复杂
引入“圈复杂度”描述一个函数的复杂程度
拆分函数是降低圈复杂度的有效方法之一,表驱动法就是其中之一
对于一个函数来说,条件或循环语句越多,函数就越复杂
引入“圈复杂度”描述一个函数的复杂程度
拆分函数是降低圈复杂度的有效方法之一,表驱动法就是其中之一
1 #include<stdio.h>
2 int Add(int x, int y)
3 {
4 return x + y;
5 }
6 int Sub(int x, int y)
7 {
8 return x - y;
9 }
10 int Mul(int x, int y)
11 {
12 return x * y;
13 }
14 int Div(int x, int y)
15 {
16 return x / y;
17 }
18 int Menu()
19 {
20 printf("1.add
");
21 printf("2.sub
");
22 printf("3.mul
");
23 printf("4.div
");
24 printf("请输入您的选择:");
25 int choice = 0;
26 scanf("%d",&choice);
27 return choice;
28 }
29 typedef int(*pfunc)(int a, int b);
30 void Run()
31 {
32 pfunc arr[] = {
33 Add,
34 Sub,
35 Mul,
36 Div
37 };
38 int choice = Menu();
39 //arr[choice-1](10,20);
40 //上面的代码有也可以分解为:
41 pfunc func = arr[choice - 1];
42 printf("%d",func(10,20));
43 }
44 int main()
45 {
46 Run();
47 return 0;
48 }