如果根据不同的输入参数决定执行不同的函数时,函数指针可以有效的减少代码量,同时增加代码的可读性。
例子:
#include <stdio.h>
static int Func_ID_1_Handle(void *para)
{
printf("para_1:%x\n",*((int *)para));
return 0;
}
static int Func_ID_2_Handle(void *para)
{
printf("para_2:%x\n",*((int *)para));
return 0;
}
static int (*Handle_Callback_Func[])(void *para)={
Func_ID_1_Handle,
Func_ID_2_Handle
};
int Handle(int nCmdID,void *para)
{
return (*Handle_Callback_Func[nCmdID])(para);
}
int main(){
int para;
para = 1;
Handle(0,¶);
para = 2;
Handle(1,¶);
return 0;
}
注意nCmdID不能超过定义的handle函数的个数。