我用下面簡單的代碼重新審視函數指針在C:使用傳遞函數指針作爲參數
Caller(TestFn, 7) //and
Caller(&TestFn, 7)
兩個
unsigned TestFn(unsigned arg)
{
return arg+7;
}
unsigned Caller(unsigned (*FuncPtr)(unsigned), unsigned arg)
{
return (*FuncPtr)(arg);
}
我把它叫做給出了相同的輸出結果:14有什麼解釋這個的。我之前一直在使用第二種調用方式。
我相信地址是通過TestFn時隱式傳遞的,所以它的解釋實際上與&TestFn相同。 – Martinsos 2013-03-26 17:03:00
我認爲這個問題可以回答它,即使它是C++ http://stackoverflow.com/questions/6893285/why-do-all-these-crazy-function-pointer-definitions-all-work-what-is-really- goi – Joe 2013-03-26 17:03:00