#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;
}
void make_menu()
{
printf("***************\n");
printf("请选择菜单:\n");
printf("1:加 2:减 3:乘 4:除 0:退出\n");
}
/*************/
//定义函数指针数组变量
//(int, int)对应于函数指针数组指向的函数列表
//方式1
//int (*fun_array[4])(int, int) = {add, sub, mul,div};
//方式2
/************/
typedef int (*func) (int, int);
func fun_array[4] = {add, sub, mul, div};
int main()
{
int i,j;
int cmd;
while(1)
{
make_menu();
scanf("%d", &cmd);
if(cmd == 0)
{
break;
}
if(cmd >=1 && cmd<=4 )
{
printf("请输入两个数字:");
scanf("%d%d",&i,&j);
printf("result=%d\n",fun_array[cmd-1](i,j));
}
}
return 0;
}
程序运行结果如下。通过函数指针数组可以代替switch-case结构。