转换表代替冗长的 switch 语句

转移表 —— “函数指针数组”

// 下面是一个计算器程序的代码片段,根据已经得到的操作符来调用不同的函数,来完成相应的计算
switch(oper){
    case ADD:
        result = add(op1, op2);
        break;
    case SUB:
        result = sub(op1, op2);
        break;
    case MUL:
        result = mul(op1, op2);
        break;
    case DIV:
        result = div(op1, op2);
        break;
}


// 创建分两个步骤,首先先声明一个函数指针数组

// 函数原型要出现在数组声明之前
double add(double, double);
double sub(double, double);
double mul(double, double);
double div(double, double);

// 假定 ADD是0, SUB是1,MUL是2,DIV是3
double (*oper_func[])(double, double) = {
    add, sub, mul, div
}

// 然后用下面这条语句代替前面整条的 switch 语句
result = oper_func[oper](op1, op2);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 3,530评论 3 44
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,554评论 1 51
  • php usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解包。 uni...
    思梦PHP阅读 2,059评论 1 24
  • PHP常用函数大全 usleep() 函数延迟代码执行若干微秒。 unpack() 函数从二进制字符串对数据进行解...
    上街买菜丶迷倒老太阅读 1,407评论 0 20
  • 春节假期过完,我报名参加了弘丹老师组织的“21天爱上写作训练营”,开课前2天,微信群的小伙伴就已经开始进入了写作状...
    月影i阅读 240评论 0 6