我用下面简单的代码重新审视函数指针在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