转移表(表驱动)

函数指针数组的使用:转移表(表驱动)->表驱动的名称出自《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 }
原文地址:https://www.cnblogs.com/cuckoo-/p/10466496.html