命令行參數:運算符選擇 (1~4)、兩整數。使用函數指針陣列分發 add/sub/mul/div。
#include <iostream>
using namespace std;
int add(int x, int y) { return x + y; }
int sub(int x, int y) { return x - y; }
int mul(int x, int y) { return x * y; }
int div(int x, int y) { return y ? x / y : 0; }
int main() {
int (*pf[4])(int, int) = { add, sub, mul, div };
while (true) {
cout << "0.add 1.sub 2.mul 3.div 4.exit\nSelect: ";
int op; cin >> op;
if (op == 4) break;
cout << "Operands: "; int a, b; cin >> a >> b;
cout << "Result = " << pf[op](a, b) << endl;
}
return 0;
}
int (*pf[4])(int, int):函數指針陣列,每元素指向同簽名函數。pf[op](a, b):透過索引動態調用,消除 switch/if 分支。int main(int argc, char* argv[]) {
if (argc != 4) return 1;
int op = atoi(argv[1]);
int a = atoi(argv[2]);
int b = atoi(argv[3]);
if (op >= 0 && op < 4) cout << pf[op](a, b) << endl;
return 0;
}