int (*parr1[3])();
//parr1 先和 [] 结合,说明 parr1是数组,数组的内容是 int (*)() 类型的函数指针
函数指针数组的用途:转移表
计算器使用函数指针数组的实现:
#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 };//转移表
do
{
printf("*************************\n");
printf("1:add 2:sub\n");
printf("3:mul 4:div\n");
printf(" 0:exit \n");
printf("*************************\n");
printf("请选择:");
scanf("%d",&input);
if ((input <= 4 && input >= 1))
{
printf("输⼊操作数:");
scanf("%d %d",&x,&y);
ret = (*p[input])(x, y);
printf("ret = %d\n", ret);
}
else if(input == 0)
{
printf("退出计算器\n");
}
else
{
printf("输⼊有误\n");
}
}while (input);
return 0;
}