函数指针数组可以替换用于选择操作的开关或if语句,如下程序所示:
#include <stdio.h>
int add(int num1, int num2);
int subtract(int num1, int num2);
int multiply(int num1, int num2);
int divide(int num1, int num2);
int main()
{
int x, y, choice, result;
int (*op[4])(int, int);
op[0] = add;
op[1] = subtract;
op[2] = multiply;
op[3] = divide;
printf("输入两个整数: ");
scanf("%d%d", &x, &y);
printf("输入0进行加法、1进行减法、2进行乘法或3进行除法:: ");
scanf("%d", &choice);
result = op[choice](x, y);
printf("%d", result);
return 0;
}
int add(int x, int y) {
return(x + y);
}
int subtract(int x, int y) {
return(x - y);
}
int multiply(int x, int y) {
return(x * y);
}
int divide(int x, int y) {
if (y != 0)
return (x / y);
else
return 0;
}
语句 int (*op[4])(int, int);声明函数指针数组。每个数组元素必须具有相同的参数和返回类型。在这种情况下,分配给数组的函数有两个int参数并返回一个int。
语句result = op[choice](x, y); 根据用户的选择执行适当的函数。先前输入的整数是传递给函数的参数。