首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C 函數指針數組:聲明、初始化與菜單驅動調用實例

     編輯:關於C++

語法核心

返回類型 (*數組名[大小])(參數列表) — 先看數組名,再看 *,最後看參數。例如:

#include 
void f1(void) { puts("函數 f1 被調用!"); }
void f2(void) { puts("函數 f2 被調用!"); }
void f3(void) { puts("函數 f3 被調用!"); }
int main(void) {
    void (*f[3])() = {f1, f2, f3};
    int choice;
    while (1) {
        puts("請輸入 1, 2, 3 選擇函數,0 退出:");
        if (scanf("%d", &choice) != 1) break;
        if (choice == 0) break;
        if (choice >= 1 && choice <= 3) {
            f[choice - 1](); // 通過指針調用
        } else {
            puts("輸入無效,請輸入 1-3 或 0。");
        }
    }
    puts("程序退出。");
    return 0;
}

關鍵注意點

  • 函數指針不能進行算術運算(+1, ++, -- 等均非法)。
  • 數組名作為參數傳遞時會退化為指向函數指針的指針(void (**f)())。
  • 可用 typedef 簡化聲明:typedef void (*FuncPtr)(void); FuncPtr f[3];

應用場景

  • 命令分發表(菜單、協議解析)
  • 狀態機跳轉表
  • 回調函數註冊表
  • 插件系統的導出函數表
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved