「C与指针心得」23.函数指针-转移表

转移表

用途:

用函数指针的形式来替换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.函数指针-转移表


分享到:


相關文章: