目录
前言
本章我们学习一下转移表,包括转移表的概念详解和实际应用两大部分
一、概念详解
转移表是通过函数指针数组来实现的
我们可以将转移表比喻作中间商来理解它的作用,当有客户来选购商品时,他会告诉中间商自己需要什么商品,中间商便会从货架上找到对应的商品并交予客户
这其中的客户便是我们的主函数,不用的商品对应不同的封装函数,主函数会对转移表发出请求来调用不同的封装函数,转移表便向主函数提供其需要的函数
有了这个“中间商”我们在写代码时可以减少很多的冗余,要调用什么函数只需要在函数指针数组里面去找,大大提高了我们的开发效率
二、实际应用
举例:计算器的一般实现:
int Add(int x, int y)
{
return x + y;
}
int Sub(int x, int y)
{
return x - y;
}
int Mul(int x, int y)
{
return x * y;
}
int Div(int x, int y)
{
return x / y;
}
void menu()
{
printf("***************************\n");
printf("**** 1. add 2. sub ****\n");
printf("**** 3. mul 4. div ****\n");
printf("**** 0. exit ****\n");
printf("***************************\n");
}
int main()
{
int input = 0;
int x = 0;
int y = 0;
int z = 0;
//函数指针的数组 - 转移表
int (*pfArr[5])(int, int) = { 0, Add, Sub, Mul, Div };
// 0 1 2 3 4
do
{
menu();
printf("请选择:");
scanf("%d", &input);//3
if (input >= 1 && input <= 4)
{
printf("请输入两个操作数:");
scanf("%d %d", &x, &y);
z = pfArr[input](x, y);
printf("%d\n", z);
}
else if (input == 0)
{
printf("退出计算器\n");
}
else
{
printf("输入错误,重新输入\n");
}
} while (input);
return 0;
}
本章到这里就结束啦,希望各位小伙伴可以点个关注,支持一下阿鹿,大家的鼓励是我前进的第一动力,3Q~