gpt4 book ai didi

c++ - 以下方式调用函数有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 22:09:06 27 4
gpt4 key购买 nike

foo();

(*foo)();

(&foo)();

这些函数调用之间到底有什么区别(假设 foo() 在某处定义)?是否有任何情况下可以使用其中的一种?

另外,为什么 &foo()*foo() 不起作用?

最佳答案

实际调用本身没有区别(相反,它们都会做同样的事情,具体取决于 foo() 的声明方式)

所有在 C 和 C++ 中的函数调用都是通过出现在函数调用括号之前的函数指针表达式进行的。如有必要,会发生非指针类型的隐式寻址。

Here's an ideone demonstrating the behavior in C++.

&foo()*foo() 不起作用的原因是函数调用运算符 () 优先于 *&。因此它们可能会起作用,具体取决于您对返回值所做的事情。 &foo() 将获取返回值的地址,而 *foo() 将取消引用它。在某些情况下,这些操作中的任何一个或两者都可能是合法的。考虑一个返回指针引用类型的函数。

部分答案取自 R.. 的评论。

关于c++ - 以下方式调用函数有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12038735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com