1.函数指针数组
函数指针数组,即为存放函数首地址的数组,类型为函数指针类型。
2.运用函数指针数组构建简单计算器
1.人机交互,首先要用选择加减或乘除的菜单,再分别写出其功能
void menu()
{
printf("****************\n");
printf("***1.加***2.减***\n");
printf("***3.乘***4.除***\n");
printf("****************\n");
printf("**输入0退出计算器**\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;
}
2.将加减乘除的函数放到函数指针数组当中,方便调用
函数指针数组的定义:
int (*p[5])(int x, int y) = {0,add,sub,mul,div };
注意:明明计算器只有四种功能,我们为什么将其能存放5个元素,首个元素还要放‘0’呢??
因为我们,在菜单选择上,分别将加减乘除用整数1,2,3,4代替。而数组下标是从0开始的,如果将数组定义成只能存放4个元素,那么将会没有下标4这个选项,即会发生数组越界。
3.完善主函数
int main()
{
int input = 0;
int ret = 0;
int x = 0;
int y = 0;
int (*p[5])(int x, int y) = {0,add,sub,mul,div };//函数指针数组的定义
do
{
menu();
printf("请选择\n");
scanf("%d", &input);
if (input >= 1 && input <= 4)
{
printf("请输入两位需要运算的整数\n");
scanf("%d %d", &x, &y);
ret = (*p[input])(x,y);//函数指针数组的使用
printf("结果为:%d\n", ret);
}
else if (input == 0)
{
printf("退出计算器\n");
}
else
{
printf("输入有误\n");
}
} while (input);
return 0;
}
本文章完。
如有不对的地方欢迎留言指正,觉得文章对您有帮助的话麻烦点个赞吧!