C++ 你能告诉我给定的代码是如何到达那个输出的吗?
代码的输出是30。但我不确定它是如何实现的C++ 你能告诉我给定的代码是如何到达那个输出的吗?,c++,function,reference,C++,Function,Reference,代码的输出是30。但我不确定它是如何实现的 #include <iostream> int &fun() { static int x = 10; return x; } int main() { fun() = 30; std::cout << fun(); return 0; } #包括 int&fun() { 静态int x=10; 返回x; } int main() { f
#include <iostream>
int &fun()
{
static int x = 10;
return x;
}
int main()
{
fun() = 30;
std::cout << fun();
return 0;
}
#包括
int&fun()
{
静态int x=10;
返回x;
}
int main()
{
fun()=30;
std::coutYourfun
给出了一个int
的位置(因为它返回a)。该位置是静态变量x
,该变量被初始化(从概念上讲,在程序运行之前初始化一次)为10
然后fun()=30;
正在分配该位置。因此x
被分配到30
最后,cout为什么期望输出为10?您没有注意到fun()返回类型中的&
?通过引用返回,这样就可以写入声明的静态变量。@down投票者:这个问题问得很好,有可编译的代码,并记录了实际和预期的行为。除了一些明显性的概念(主观的)之外“我不知道它有什么问题。”芭丝谢芭:问题是C++的基础,C++上的任何一本书都应该解释这个问题。