1、函数指针数组的应用
#include <stdio.h>
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(void)
{
int * arr[5];
int(*pa)(int x, int y) = Add;
int(*parr[4])(int, int) = { Add, Sub, Mul, Div };
int i = 0;
for (i = 0; i < 4; i++)
{
printf("%d\n", parr[i](2, 3));
}
return 0;
}
--------------------------------------------------------------
-------------------------------------------------------------
-------------------------------------------------------------
2、函数指针数组实现计算器(do...while)
//函数指针数组实现计算器
#include <stdio.h>
void menu()
{
printf("*************************\n");
printf("*** 1.add 2.sub ***\n");
printf("*** 3.mul 4.div ***\n");
printf("*** 5.xor 0.exit ***\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 Xor(int x, int y)
{
return x ^ y;
}
int main()
{
int input = 0;
int x = 0;
int y = 0;
int(*pfArr[6])(int, int) = {0 , Add, Sub ,Mul, Div, Xor};
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
if (input >= 1 && input <= 5)
{
printf("请输入两个操作数:>");
scanf("%d%d", &x, &y);
int ret = pfArr[input](x, y);
printf("%d\n", ret);
}
else if (input == 0)
{
printf("退出\n");
}
else
{
printf("选择错误\n");
}
} while (input);
return 0;
}
--------------------------------------------------
--------------------------------------------------
--------------------------------------------------
3、使用函数指针数组实现计算器(使用switch)
//(优化版)函数指针数组实现计算器
#include <stdio.h>
void menu()
{
printf("*************************\n");
printf("*** 1.add 2.sub ***\n");
printf("*** 3.mul 4.div ***\n");
printf("*** 5.xor 0.exit ***\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 Xor(int x, int y)
{
return x ^ y;
}
void Calc(int (*pf)(int, int))
{
int x = 0;
int y = 0;
printf("请输入两个操作数 :>");
scanf("%d%d", &x, &y);
printf("%d\n", pf(x, y));
}
int main()
{
int input = 0;
do
{
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
Calc(Add);
break;
case 2:
Calc(Sub);
break;
case 3:
Calc(Mul);
break;
case 4:
Calc(Div);
break;
case 5:
Calc(Xor);
break;
case 0:
printf("退出\n");
break;
default:
printf("选择错误\n");
break;
}
}while (input);
return 0;
}