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

C 語言進階:函數指標、指標函數與回調函數深度解析

     編輯:關於C

核心概念辨析

這三個術語常令人混淆,關鍵在於「主語」是函數還是指標:

1. 指標函數

本質是函數,其返回值類型為指標。

int* function(void);  // 返回 int* 指標

記憶口訣:「指標修飾函數」→ 函數返回指標。

2. 函數指標

本質是指標,指向函數的記憶體位址(入口點)。

int (*fp)(int x);  // fp 是指標,指向參數為 int、返回 int 的函數

記憶口訣:「函數修飾指標」→ 指標指向函數。

宣告與賦值範例

int func(int x);        // 一般函數宣告
int (*fp)(int x);       // 定義函數指標 fp
fp = func;              // 將 func 入口位址賦給 fp(函數名即位址)

函數指標的兩大用途

  1. 間接呼叫函數:fp(10); 等同於 func(10);
  2. 作為函數參數傳遞:實現回調機制的基礎

回調函數

定義:透過函數指標作為參數傳入另一函數,並在後者內部被呼叫的函數。

核心流程:

  1. 呼叫者將函數指標(位址)傳給被呼叫者
  2. 被呼叫者在特定時機透過該指標呼叫目標函數
  3. 控制權「回調」至呼叫者提供的函數

實戰應用場景

  • qsort() 排序:比較函數作為回調傳入
  • 事件驅動/訊號處理:註冊處理函數
  • 策略模式:執行時動態切換演算法

記憶錨點總結

術語本質關鍵語法特徵
指標函數函數返回類型含 *,如 int* func()
函數指標指標指標名被 () 包裹,如 int (*fp)()
回調函數函數透過函數指標參數被間接呼叫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved