#include <stdio.h>
// 定义四个函数
int add(int, int); int sub(int, int); int mul(int, int); int div(int, int);
// 定义指向这类函数的指针 typedef int (*FP_CALC)(int, int);
// 定义一个函数calc_func,它根据操作字符 op 返回指向相应的计算函数的指针 FP_CALC calc_func(char op);
// 根据 op 返回相应的计算结果值 int calc(int a, int b, char op);
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 b? a/b : -1; }
FP_CALC calc_func(char op) { switch (op) { case '+': return add; case '-': return sub; case '*': return mul; case '/': return div; default: return NULL; } return NULL; }
int calc(int a, int b, char op) { FP_CALC fp = calc_func(op); // 下面是类似的直接定义指向函数指针变量
if (fp) return fp(a, b); else return -1; }
void main() { int a = 100, b = 20; printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+')); printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-')); printf("calc(%d, %d, %c) = %d\n", a, b, '*', calc(a, b, '*')); printf("calc(%d, %d, %c) = %d\n", a, b, '/', calc(a, b, '/'));
return 0; }
|