新网站怎样做好外链,wordpress主导航菜单,asp+php+mysql+aspx环境搭建与6种网站安装2,公司起名字大全免费3个字定义#xff1a; 转移表就是一个函数指针数组。本质上是数组#xff0c;数组的内容是函数指针#xff0c;也就是函数地址#xff0c;通过调用函数地址就可以调用函数的功能。
特别注明#xff1a;假如函数名为Add#xff0c;*Add的效果完全等于Add 为了弄清楚转移表的应…定义 转移表就是一个函数指针数组。本质上是数组数组的内容是函数指针也就是函数地址通过调用函数地址就可以调用函数的功能。
特别注明假如函数名为Add*Add的效果完全等于Add 为了弄清楚转移表的应用我用实现计算机加减乘除的例子来说明。
代码1:
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
void menu()
{printf(******************************\n);printf(**** 1. add 2. sub ****\n);printf(**** 3. mul 4. div ****\n);printf(**** 0. exit ****\n);printf(******************************\n);
}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;
}int main()
{int input 0;int x 0;int y 0;int ret 0;do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:printf(请输入两个操作数:);scanf(%d %d, x, y);ret Add(x, y);printf(%d\n, ret);break;case 2:printf(请输入两个操作数:);scanf(%d %d, x, y);ret Sub(x, y);printf(%d\n, ret);break;case 3:printf(请输入两个操作数:);scanf(%d %d, x, y);ret Mul(x, y);printf(%d\n, ret);break;case 4:printf(请输入两个操作数:);scanf(%d %d, x, y);ret Div(x, y);printf(%d\n, ret);break;case 0:printf(退出计算器\n);break;default:printf(选择错误重新选择\n);break;}} while (input);return 0;
}
代码2用转移表
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
void menu()//菜单
{printf(************************\n);printf(****1.add 2.sub **\n);printf(****3.mul 4.div ***\n);printf(****0.exit ********\n);printf(************************\n);
}
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;
}
int main()
{int input 0;int x 0;int y 0;int ret 0;do {menu();int (*pfArr[])(int, int) { NULL,Add,Sub,Mul,Div };//0,1,2,3,4创建回调函数调用其余四个函数printf(请选择:);scanf(%d, input);if (input 0)//根据菜单选择情况{printf(退出计算器\n);}else if (input 1 input 4){printf(请输入两个操作数:);scanf(%d%d, x, y);ret pfArr[input](x, y);//用回调函数调用函数printf(%d\n, ret);}else{printf(选择错误请重新选择\n);}} while (input);return 0;
} 总结
通过两段代码我们不难看出使用转移表的计算机在主函数部分的代码量更加少无重复性代码且方便新函数的增加以上就是转移表的好处和应用。