表驱动的代码实现

转载 2013年12月03日 10:46:21

1、在程序开发中,表驱动可以帮助我们来优化复杂的if-elseif -esle的结构,下面上代码

#include <stdio.h>
#include <stdlib.h>

/*加法*/
int Sum( int a, int b )
{
    return a + b;
}

/*减法*/
int Sub( int a, int b )
{
    return a - b;
}

/*乘法*/
int Multi( int a, int b )
{
    return a * b;
}

/*除法*/
int Division( int a, int b )
{
    return ( b == 0 ) ? 0 : (a / b);
}

/*定义函数指针*/
typedef int ( *pfFun )( int, int );

/*操作码*/
typedef enum _ENOPCODE
{
    OPCODE_ADD = 0,   /*加*/
    OPCODE_SUB,       /*减*/
    OPCODE_MULTI,     /*乘*/
    OPCODE_DIVISION,  /*除*/
    OPCODE_BUTT
}enOpCode;

/*使用驱动表计算*/
int GetOpResultByTable( int a, int b, enOpCode enOp )
{
    if ( OPCODE_BUTT == enOp )
    {
       return -1;
    }
    pfFun pf[ OPCODE_BUTT ] = { Sum, Sub, Multi, Division };
    return pf[ enOp ]( a, b );
   
}

int main( int argc, char *argv[] )
{
  int iTmp = 0;
  int a = 20;
  int b = 30;

  iTmp = GetOpResultByTable( a, b, OPCODE_ADD );
  printf( "Tmp is: %d\n", iTmp ); 
  return 0;
  
}


 

相关文章推荐

java代码实现JDBC连接MySql以及引用驱动程序包

JDBC连接MySql以及引用驱动程序包

Window XP驱动开发(十七) 芯片固件程序设计 (代码实现,针对USB2.0 芯片CY7C68013A)

转载引用于 http://blog.csdn.net/chenyujing1234  一、固件的修改 修改是基于CYPRESS官方提供的固件工程Bulkloop基础上。(获得方...

Window XP驱动开发(十四) 驱动应用程序端代码实现(针对USB2.0 芯片CY7C68013A,基于CyAPI.lib与Bulkloop固件)

转载请标明是引用于 http://blog.csdn.net/chenyujing1234  欢迎大家提出意见,一起讨论! 需要源码的可以与我联系.   在我的一篇文章    Window X...

【第五节】Java代码实现链表

package com.java.chapterFive;public class LinkListApp { /** * @param args */ public...

哈希表(散列表)详解及代码实现

散列表(Hash table,也叫哈希表),是根据关键码值(Key, value)而直接进行访问的数据结构。也就是说,它通过吧关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数叫做...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)