跳轉表例項(一)

2021-08-27 15:36:55 字數 1158 閱讀 6140

/* 用跳轉表實現簡易計算器 */

#include#include#include#define num 10

double add(double a, double b)

double sub(double a, double b)

double mul(double a, double b)

double divide(double a, double b)

double compare_max(double a, double b)

double compare_min(double a, double b)

int search_keyword( char const * const desired_word, char const *keyword_table)

return -1;

}/* 定義指標陣列,用作儲存關鍵字的表。在表的末尾加上null指標,則查詢時無需知道表的長度。 */

char const *oper_sequence = ;

/* oper_func是個陣列,其中元素的型別是函式指標,函式返回值是double型別 */

double (*oper_func)(double, double) = ;

int main()

; int seq = 0;

double data1 = 0;

double data2 = 0;

double result = 0;

printf("operator:");

/* 將輸入的操作符存入oper陣列 */

scanf("%s", oper);

seq = search_keyword(oper, oper_sequence);

/* 沒有找到對應的操作符時的錯誤處理 */

if(seq < 0)

printf("請輸入引數data1,data2:");

scanf("%lf,%lf", &data1, &data2);

result = oper_func[seq](data1,data2);

printf("result is: %f\n", result);

return 0;

}

一些跳轉語句的用法例項

while 在條件為ture的情況下,會重複執行迴圈體內的語句,直到條件為false break 退出最近的封閉switch while for foreach continue 將控制傳遞給下乙個while for foreach,繼續執行下一次迴圈 return 將控制返回到出現return語句...

switch跳轉表分析

file 2015 1026 exam 1 2 main.c brief switch case分析 401139h 為switch 跳轉表首位址 ecx 為 casen,casen 是作過優化的n從 0開始到4結束 在memory 視窗檢視 switch 跳轉表首位址401139h 每個位址是4個...

switch的跳轉表

1.跳轉表是否是隨機生成的?是隨機生成的 2.跳轉表的工作原理?3.跳轉表中每個case之間的關係?跳躍表的性質 1.由很多層結構組成 2.每一層都是乙個有序的鍊錶,排列順序為由高層到底層,都至少包含兩個鍊錶節點,分別是前面的head節點和後面的nil節點 3.最底層的鍊錶包含了所有的元素 4.如果...