转换表代替冗长的 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);

你可能感兴趣的:(转换表代替冗长的 switch 语句)