我知道這是重複的。我已經搜索過,但沒有解決我遇到的問題。 注意在試圖單出我的困惑我試圖從原來簡化類型轉換。但願它不是不確定的行爲輸入函數指針
聲明一個指向函數
Int (*funcPtr)(void*,void*);
STRCMP聲明
int strcmp (char *, char *);
類型轉換函數指針
FuncPtr = (int (*)(void*, void*))strcmp
這是我弄糊塗。我明白我們已經創建了一個函數指針。因此,類型鑄造FuncPtr例如,只是改變什麼類型的功能funcPtr可以指向。我也看到,一個函數的名字是一個函數指針到自身,鑄字STRCMP,並使用從上面我的理解,
int (*)(void*, void*))strcmp
STRCMP現在可以指向需要兩個指針作廢的功能並返回一個int,它顯然是錯誤的,就像數組我認爲函數名稱不能是指向另一個函數的指針。
因爲我的理解上面我看不出你可以用下面的類型轉換
FuncPtr = (int (*)(void*, void*))strcmp
STRCMP的地址分配給FuncPtr作爲改變什麼函數指針STRCMP點沒有按不會改變參數和返回類型strcmp。
我真的很感謝一些知識,我只是很困惑。
嗯,只是因爲你可以,並不意味着這是個好主意。如果需要,我可以將我的車開到樹上,但是...... – ThingyWotsit
任何函數指針都可以指向任何函數,但不允許通過指針調用該函數,除非指向的類型與函數完全匹配指向 –
「我認爲函數名不能是另一個函數的指針」Eh?你什麼意思?什麼是'FuncPtr',什麼類型?請注意,C語言區分大小寫。 – Lundin