函數指針是指向函數的指針變量。
通常我們說的指針變量是指向一個整型、字元型或數組等變量,而函數指針是指向函數。
函數指針可以像一般函數一樣,用于調用函數、傳遞參數。
函數指針變量的聲明:
以下執行個體聲明了函數指針變量 p,指向函數 max:
編譯執行,輸出結果如下:
函數指針作為某個函數的參數
函數指針變量可以作為某個函數的參數來使用的,回調函數就是一個通過函數指針調用的函數。
簡單講:回調函數是由别人的函數執行時調用你實作的函數。
以下是來自知乎作者常溪玲的解說:
你到一個商店買東西,剛好你要的東西沒有貨,于是你在店員那裡留下了你的電話,過了幾天店裡有貨了,店員就打了你的電話,然後你接到電話後就到店裡去取了貨。在這個例子裡,你的電話号碼就叫回調函數,你把電話留給店員就叫登記回調函數,店裡後來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店裡去取貨叫做響應回調事件。
執行個體中 populate_array 函數定義了三個參數,其中第三個參數是函數的指針,通過該函數來設定數組的值。
執行個體中我們定義了回調函數 getnextrandomvalue,它傳回一個随機值,它作為一個函數指針傳遞給 populate_array 函數。
populate_array 将調用 10 次回調函數,并将回調函數的傳回值指派給數組。