2013-04-02 29 views
3

我在讀一本關於算法和作者定義雙向鏈表與此代碼:爲什麼指向鏈表初始化中使用的函數?

void dlist_init(DList *list, void (*destroy)(void *data)); 

有什麼用函數指針來摧毀這裏的功能? 我們難道不能稍後調用任何列表上的destroy()函數嗎? 爲什麼在初始化時將指針傳給它?

+0

大概是將這些信息封裝在一個地方。 –

+0

不同類型的數據需要不同的'destroy'功能,所以你把它捆綁在列表中,我懷疑。 –

+0

看起來像凱爾勞登的*掌握C *的算法...如果是這樣,這是解釋。 – effeffe

回答

7

函數指針傳遞給初始化函數,以便列表函數知道如何銷燬列表條目。列表函數被設計用於處理各種條目,因此需要「告知」如何銷燬該列表中的特定條目。

相關問題