【发布时间】:2018-07-15 17:36:01
【问题描述】:
我们可以在表达式的左侧调用一个函数吗?
此代码 sn-p 运行良好,但如何? function calling 怎么能在左边,请详细说明这个 sn-p 是如何执行和运行良好的,如果我不会在函数定义中使用 static int 怎么办。提前致谢。
#include<iostream>
using namespace std;
int &fun()
{
static int x;
return x;
}
int main()
{
fun() = 10;
/* this line prints 10 on screen */
printf(" %d ", fun());
getchar();
return 0;
}
【问题讨论】:
-
fun()不是函数声明。这是一个函数调用,它本身就是一个表达式。由于这个特定的调用返回一个左值,所以它出现在赋值的左侧是非常好的。您可能想查看您最喜欢的 C++ 教科书中有关参考的章节。 -
如果您不使用
static int,那么该行代码将只是x;,这将是一个语法错误。我想我不明白你的这部分问题。 -
@Igor Tandetnik,很抱歉把它写成函数声明,但是一个函数调用怎么能接受一些东西,它可以返回但它怎么能接受。以及为什么当我从变量 x 的声明中删除 static 时出现语法错误,抱歉给您带来不便,我是 C++ 的新手。
-
@Shivanshu“调用函数如何接受某些东西”表明您对分配的工作方式有一个不正确的模型。函数调用不接受任何东西。该函数返回某个对象在内存中的位置。函数调用到此结束。它是
main然后对那个对象做一些事情(即,分配给它)。 -
了解引用的工作原理。注意函数返回类型上的
&。