我見過的函數指針的使用在C.我想知道他們是如何準確地在C幕後實現的?它們只是指向函數指令的存儲位置嗎?如果是這樣或者其他,我會很感激,如果有人能夠以圖表方式展示/闡述(或指向一些在線資源)他們是如何工作的?
在此先感謝!
編輯:這個問題不是關於函數指針的使用,如「How do function pointers in C work?」中所解釋的。這是關於它們如何實施的內部工作。
我見過的函數指針的使用在C.我想知道他們是如何準確地在C幕後實現的?它們只是指向函數指令的存儲位置嗎?如果是這樣或者其他,我會很感激,如果有人能夠以圖表方式展示/闡述(或指向一些在線資源)他們是如何工作的?
在此先感謝!
編輯:這個問題不是關於函數指針的使用,如「How do function pointers in C work?」中所解釋的。這是關於它們如何實施的內部工作。
是的,它們只是一個指向函數位置的指針,與指向數據的指針相同。然而,根據CPU架構,當使用函數指針時,實際的程序集可能會非常不同,因爲與數據相比,函數可以存儲在不同類型的內存中。
維基百科上的文章(http://en.wikipedia.org/wiki/Function_pointer)完全解釋說明; 「取而代之的是指向數據值,函數指針指向內存中的可執行代碼,當取消引用時,可以使用函數指針來調用它指向的函數,並像傳統函數調用一樣傳遞它的參數。」
指針只是指向要執行的代碼的內存位置。沒有比這更復雜的了... – Starkey
看看http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work – Yuriy