函数指针数组可以替换用于选择操作的开关或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); 根据用户的选择执行适当的函数。先前输入的整数是传递给函数的参数。