函数指针数组的用途:转移表
例子:计算器
#include <stdio.h>
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int mul(int a, int b)
{
return a*b;
}
int div(int a, int b)
{
return a / b;
}
int main()
{
int x, y;
int input = 1;
int ret = 0;
int(*p[5])(int x, int y) = { 0, add, sub, mul, div }; // 转移表
while (input)
{
printf("*************************\n");
printf("****** 1:add 2:sub ******\n");
printf("****** 3:mul 4:div ******\n");
printf("****** 0:exit ******\n");
printf("请选择:");
scanf("%d", &input);
if ((input < 5 && input > 0))
{
printf("请输入操作数:");
scanf("%d %d", &x, &y);
ret = (*p[input])(x, y);
}
else if (input == 0)
return;
else
printf("输⼊入有误\n");
printf("ret = %d\n", ret);
}
return 0;
}