轉移表
用途:
用函數指針的形式來替換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從數組中選擇正確的函數指針,而函數調用操作符將執行這個函數