函數指標當成回傳值
- 函數宣告
typedef int(*pt2Func)(int, int) __reentrant; pt2Func GetPtr1(const char opCode); int (*GetPtr2(int, int) __reentrant)(const char opCode); GetPtr1 跟 GetPtr2 宣告結果是一樣的,利用 typedef 比較容易理解。其中的 __reentrant 也可以不用宣告,因為只是函數指標傳遞並不影響函數中的區域變數的使用。
- 程式範例
int Plus(int a, int b) __reentrant { return a+b; } int Minus(int a, int b) __reentrant { return a-b; } int (*GetPtr1(int, int))(const char opCode) { if(opCode == '+') return &Plus; else return &Minus; } void main() { int (*pt2Function)(int, int) __reentrant = NULL; printf("Executing 'Return_A_Function_Pointer'\n"); pt2Function=GetPtr1('+'); printf("2+4=%d\n", (*pt2Function)(2, 4)); pt2Function=GetPtr1('-'); printf("2-4=%d\n", (*pt2Function)(2, 4)); }
張貼留言