在 C 語言中,函式指標是許多進階設計技巧的基礎,其中回呼函式 (Callback Function) 是最常見的應用之一。透過這種設計,可以讓程式變得更加靈活並且易於模組化。接下來,我們將通過一個範例來介紹如何使用回呼函式。程式碼如下:
#include <stdio.h>
// 使用 typedef 自定義一個別名是 Processor 的函式指標資料型態,代表一種「接收一個 int 並傳回一個 int」的函式。
typedef int (*Processor)(int);
// 三個操作函式
int square(int x) { // 平方
return x * x;
}
int doubleValue(int x) { // 乘以2
return 2 * x;
}
int negate(int x) { // 取負號
return -x;
}
// 函式 process,接收一個數字與一個 func 函式指標
int process(int value, Processor func) {
return func(value); // 呼叫傳入的函式並將運算結果回傳
}
int main() {
int num, choice, result;
// 定義函式指標陣列
Processor handlers[] = { square, doubleValue, negate };
// 操作名稱對照
const char *modes[] = { "平方", "乘以2", "取負號" };
printf("請輸入一個整數:");
scanf("%d", &num );
printf("請選擇操作方式 ( 1-3 ):\n");
for (int i = 0; i < 3; i++) {
printf("%d %s\n", i+1, modes[i]);
}
scanf("%d", &choice);
if (choice >= 1 && choice <=3) {
result = process(num, handlers[choice - 1]);
printf("處理結果:%d\n", result);
} else {
printf("無效的選項。\n");
}
return 0;
}
結論
- 在 main() 主函式中,透過選單讓使用者選擇操作方式,並根據選擇使用函式指標陣列來呼叫對應的函式。
- process() 函式是一個通用框架,只需傳入不同的回呼函式,即可實現不同的處理邏輯。
沒有留言:
張貼留言
請注意 : 您的留言發佈成功 , 需經審核後 , 才能決定是否回覆 . 謝謝 !!