转移表
用途:
用函数指针的形式来替换switch、if/else的方式
示例:
一个计算器实现
double add(double,double);
double sub(double,double);
double mul(double,double);
double div(double,double);
switch(oper)
{
case ADD:
result = add(op1mop2);
break;
case SUB:
result = sub(op1mop2);
break;
case MUL:
result = mul(op1mop2);
break;
case DIV:
result = div(op1mop2);
break;
default:
break;
}
上述代码改成转移表只需要两个步骤。
首先,声明并初始化一个函数指针数组。
double (*oper_func[])(double,double)={add,sub,mil,div};
调用:
result = oper_func[oper](op1,op2);
oper从数组中选择正确的函数指针,而函数调用操作符将执行这个函数