转移表(表驱动)

Posted cuckoo-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转移表(表驱动)相关的知识,希望对你有一定的参考价值。

函数指针数组的使用:转移表(表驱动)->表驱动的名称出自《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 }

 

以上是关于转移表(表驱动)的主要内容,如果未能解决你的问题,请参考以下文章

数据驱动编程与表驱动法(多if-else结构精简)

数据驱动编程与表驱动法(多if-else结构精简)

C语言表驱动法编程实践(精华帖,建议收藏并实践)

将数据从底部工作表对话框片段传递到片段

从底部工作表对话框片段中获取价值

Atiit 如何手写词法解析器