2012-12-04 104 views
2

可能重複:
How do function pointers in C work?C中的函數指針實際上是如何工作的?

我見過的函數指針的使用在C.我想知道他們是如何準確地在C幕後實現的?它們只是指向函數指令的存儲位置嗎?如果是這樣或者其他,我會很感激,如果有人能夠以圖表方式展示/闡述(或指向一些在線資源)他們是如何工作的?

在此先感謝!

編輯:這個問題不是關於函數指針的使用,如「How do function pointers in C work?」中所解釋的。這是關於它們如何實施的內部工作。

+3

指針只是指向要執行的代碼的內存位置。沒有比這更復雜的了... – Starkey

+2

看看http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work – Yuriy

回答

1

是的,它們只是一個指向函數位置的指針,與指向數據的指針相同。然而,根據CPU架構,當使用函數指針時,實際的程序集可能會非常不同,因爲與數據相比,函數可以存儲在不同類型的內存中。

1

維基百科上的文章(http://en.wikipedia.org/wiki/Function_pointer)完全解釋說明; 「取而代之的是指向數據值,函數指針指向內存中的可執行代碼,當取消引用時,可以使用函數指針來調用它指向的函數,並像傳統函數調用一樣傳遞它的參數。」