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

[C語言] 函數指標詳解:從入門到實戰

     編輯:關於C語言

什麼是函數指標?

在 C 語言中,指標不僅能指向變數、陣列,還能指向函數。函數指標就是指向函數的指標。函數名實際上代表該函數在記憶體中的起始位址。利用函數指標,我們可以將函數位址傳遞給其他函數,也可以從函數返回函數指標,實現靈活的回調與動態調用機制。

基本宣告與使用

宣告一個函數指標的語法如下:

返回類型 (*指標名)(參數列表);

例如:int (*fun)(int, int); 宣告了一個指向「接受兩個 int 參數並返回 int」函數的指標 fun。

完整範例:透過函數指標呼叫求和函數

#include <stdio.h>

int sum(int a, int b);  // 函數宣告

int main() {
    int a, b;
    int (*fun)(int, int);  // 宣告函數指標

    printf("請輸入兩個整數:");
    scanf("%d,%d", &a, &b);

    // 方式一:直接使用函數名呼叫
    printf("第一種呼叫方式:函數名呼叫求和函數:\n");
    printf("%d+%d=%d\n", a, b, sum(a, b));

    // 方式二:使用函數指標呼叫
    fun = sum;  // 讓 fun 指向 sum 函數
    printf("第二種呼叫方式:函數指標呼叫求和函數:\n");
    printf("%d+%d=%d\n", a, b, (*fun)(a, b));  // 也可寫成 fun(a, b)
    return 0;
}

int sum(int m, int n) {
    return m + n;
}

關鍵點解析

  • fun = sum;:函數名 sum 會隱式轉換為函數位址,賦值給指標 fun。
  • (*fun)(a, b):解參考指標並呼叫函數,等價於 fun(a, b),因為函數指標在呼叫時會自動轉換。
  • 編譯階段:程式碼被轉譯為機器指令並載入記憶體,函數指標儲存的就是函數在記憶體中的入口位址。

應用場景

函數指標常用於:回調函數、狀態機實現、排序函數(如 qsort 的比較器)、動態載入庫函數等,是 C 語言實現多態與模組化設計的核心工具之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved