將函數指標作為函數參數,實現「策略模式」雛形:呼叫端決定具體運算邏輯。
int calculate(int (*op)(int, int), int a, int b); /* op 為函數指標參數 */
#include
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 calculate(int (*op)(int, int), int a, int b) {
return op(a, b); /* 透過指標呼叫傳入的運算函數 */
}
int main() {
printf("add = %d\n", calculate(add, 20, 10));
printf("sub = %d\n", calculate(sub, 20, 10));
printf("mul = %d\n", calculate(mul, 20, 10));
printf("div = %d\n", calculate(div, 20, 10));
return 0;
}
int (*ops[4])(int, int) = {add, sub, mul, div};
const char *names[4] = {"add", "sub", "mul", "div"};
for (int i = 0; i < 4; i++)
printf("%s = %d\n", names[i], calculate(ops[i], 20, 10));
函數指標參數解耦演算法骨架與具體操作,是 C 語言實現多態與泛型的核心技術。