So..I明白,如果我走(*ptr
)的一些函數f然後如何執行函數指針的算術運算?
res = (*ptr)(a,b) is the same as res = f(a,b).
所以現在我的問題是,我有3個整數閱讀。前兩個是操作數,第三個是操作員,例如1 = add, 2 = subtract, 3 = multiply, 4 = divide
。如果沒有if或switch語句,我該怎麼做。
我在想兩個可能的解決方案
創建4個三分球和每個指針尊重算術運算,但我還是得做一些輸入 驗證這需要如果或開關語句
這不是一個真正的解決方案,但基本的想法可能會像。如果C =運算符,然後我可以以某種方式做類似解析度= (* PTRC)(A,B),但我不認爲有對C
樣品輸入
1 2 1
1 2 2
1 2 3
1 2 4
這樣的語法
樣本輸出
3
-1
2
0
我的代碼:
#include <stdio.h>
//Datatype Declarations
typedef int (*arithFuncPtr)(int, int);
//Function Prototypes
int add(int x, int y);
int main()
{
int a, b, optype, res;
arithFuncPtr ptr;
//ptr points to the function add
ptr = add;
scanf("%i %i", &a, &b);
res = (*ptr)(a, b);
printf("%i\n", res);
return 0;
}
int add(int x, int y)
{
return x+y;
}
檢查它我將不得不使用if語句。我試圖找到一種方法來檢查哪個運算符沒有if語句。 – CHEWWWWWWWWWW
您如何創建一個函數指針數組,並基於您正在執行的操作調用基於一點創意編制的適當函數? ('op-1',其中'op'是你想要的操作,你的函數指針數組分別包括加法,減法乘法和除法函數地址。) – WhozCraig