2025年5月20日 星期二

C語言:函式指標與回呼函式的實戰範例


在 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() 函式是一個通用框架,只需傳入不同的回呼函式,即可實現不同的處理邏輯。


沒有留言:

張貼留言

請注意 : 您的留言發佈成功 , 需經審核後 , 才能決定是否回覆 . 謝謝 !!