跳轉表就是乙個函式指標陣列。
建立乙個跳轉表需要兩個步驟。
1、首先,宣告並初始化乙個函式指標陣列,唯一需要留心之處就是確保這些函式的原型出現在這個陣列的宣告之前
2、使用下面的語句替換 switch 語句:
result = switch_table(num)(value1, value2);
num:用於從陣列中選擇正確的函式指標,而函式呼叫操作符將執行這個函式。
value1、value2用於向跳轉跳函式傳遞引數。
#include #include #define function_jump 1
typedef enum
op_type;
double add(double para1, double para2)
double sub(double para1, double para2)
double mul(double para1, double para2)
double div(double para1, double para2)
#if (function_jump == 0)
double fun_caluc(int flag, double para1, double para2)
case op_sub:
case op_mul:
case op_div:
default:
printf("can not find you \n");
result = 0xff;
break;
}return result;
}#endif // function_jump
#if (function_jump == 1)
typedef double (*op_fun)(double para1, double para2);
/*重定義了乙個函式指標型別op_fun 該函式指標指向的函式有兩個double型別的引數 返回值也是double型別的引數*/
typedef struct op_struct
op_struct;
op_struct j_opstruct =
, ,,,
};int f_opnum = sizeof(j_opstruct) / sizeof(op_struct);
double fun_caluc(int cmd, double para1, double para2)
return j_opstruct[cmd].opfun(para1, para2);
}#endif // function_jump
int main(int argc, char *ar**)
#if 0
cal_value = 8.000000
#endif // 0
C語言 函式指標 函式指標陣列 轉移表
1.什麼是函式指標?函式指標也是指標,不過它指向的是函式的首位址。體會下面一段 可以看到兩條語句執行的結果是一模一樣的。再觀察下面這段 可見它指向的就是函式的首位址 2.怎樣定義函式指標變數 例 int p 函式引數 int 函式的返回值是int型的 void p void 函式的返回值型別是voi...
C語言筆記(三)函式 指標
函式,相當於把大的任務拆分成小的模組,一般乙個函式不超過80行 每個程式只有乙個主函式 輸出資料只能是乙個。有多個返回值的時候可以使用乙個引數 函式宣告 只寫函式頭,不寫函式體 在函式宣告時,可以省略引數列表的引數名,只寫引數型別 傳值方式,在函式呼叫時,把實參值的乙份拷貝,賦值給形參 可以寫乙個例...
c語言指標(三)
5 陣列和指標的關係 陣列的陣列名其實可以看作乙個指標。看下例 例九 intarray 10 value value array 0 也可寫成 value array value array 3 也可寫成 value array 3 value array 4 也可寫成 value array 4 ...