码迷,mamicode.com
首页 > 其他好文 > 详细

转移表(表驱动)

时间:2019-03-03 17:31:47      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:span   clu   run   表驱动法   div   nbsp   函数指针数组的使用   print   转移   

函数指针数组的使用:转移表(表驱动)->表驱动的名称出自《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\n");
21  printf("2.sub\n");
22  printf("3.mul\n");
23  printf("4.div\n");
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 }

 

转移表(表驱动)

标签:span   clu   run   表驱动法   div   nbsp   函数指针数组的使用   print   转移   

原文地址:https://www.cnblogs.com/cuckoo-/p/10466496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!