【发布时间】:2016-02-05 03:06:37
【问题描述】:
我知道当我们使用函数名作为值时,函数会自动转换为指针。 看下面的代码:
int print(int a)
{
return a;
}
int main()
{
int (*p)(int) = print;
int (*q)(int) = &print;
cout << p(8) << endl;
cout << (*p)(8) << endl;
}
为什么int (*p)(int) = print;,print是指针,而int (*p)(int) = &print;,&print是指针的地址,等价?
另一方面,当我们使用指向函数的指针来调用函数时,为什么p(8) 和(*p)(8) 是等价的?
【问题讨论】:
-
我想这只是为了方便,您在使用函数指针调用函数时不必显式取消引用函数指针。如果您使用
typedefs,您可以使用函数指针而不使用任何*,恕我直言非常好 -
@SimonKraemer 谢谢。但是链接只解释了取消引用,我的问题还包括函数指针的分配。