转移表
用途:
用函数指针的形式来替换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从数组中选择正确的函数指针,而函数调用操作符将执行这个函数
![「C与指针心得」23.函数指针-转移表](http://p2.ttnews.xyz/loading.gif)
閱讀更多 大貓玩程序 的文章