天天看點

17 C語言 - 函數指針與回調函數

函數指針是指向函數的指針變量。

通常我們說的指針變量是指向一個整型、字元型或數組等變量,而函數指針是指向函數。

函數指針可以像一般函數一樣,用于調用函數、傳遞參數。

函數指針變量的聲明:

以下執行個體聲明了函數指針變量 p,指向函數 max:

編譯執行,輸出結果如下:

函數指針作為某個函數的參數

函數指針變量可以作為某個函數的參數來使用的,回調函數就是一個通過函數指針調用的函數。

簡單講:回調函數是由别人的函數執行時調用你實作的函數。

以下是來自知乎作者常溪玲的解說:

你到一個商店買東西,剛好你要的東西沒有貨,于是你在店員那裡留下了你的電話,過了幾天店裡有貨了,店員就打了你的電話,然後你接到電話後就到店裡去取了貨。在這個例子裡,你的電話号碼就叫回調函數,你把電話留給店員就叫登記回調函數,店裡後來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店裡去取貨叫做響應回調事件。

執行個體中 populate_array 函數定義了三個參數,其中第三個參數是函數的指針,通過該函數來設定數組的值。

執行個體中我們定義了回調函數 getnextrandomvalue,它傳回一個随機值,它作為一個函數指針傳遞給 populate_array 函數。

populate_array 将調用 10 次回調函數,并将回調函數的傳回值指派給數組。

繼續閱讀