C++ 以c++;为什么?
代码C++ 以c++;为什么?,c++,output,pass-by-reference,C++,Output,Pass By Reference,代码 #包括 使用名称空间std; int&fun() { int x=10; 返回x; } int main() { fun()=30; cout这是未定义的行为。您正在返回对局部变量的引用,该局部变量的生存期已在函数末尾结束 g++对这段代码的处理非常有趣: 此时,它将打印10 此时,它将打印30 在和处,它打印0 如果将x声明为static,则它具有静态存储持续时间,这意味着它的生存期不会在函数返回时结束,这意味着返回对它的引用是合法的。对foo的所有调用都将返回对相同int的引用,这一措
#包括
使用名称空间std;
int&fun()
{
int x=10;
返回x;
}
int main()
{
fun()=30;
cout这是未定义的行为。您正在返回对局部变量的引用,该局部变量的生存期已在函数末尾结束
g++对这段代码的处理非常有趣:
此时,它将打印10
此时,它将打印30
在和处,它打印0
如果将x
声明为static
,则它具有静态存储持续时间,这意味着它的生存期不会在函数返回时结束,这意味着返回对它的引用是合法的。对foo
的所有调用都将返回对相同int
的引用,这一措辞几乎像采访一样问题(如果是的话,在我看来,这不是一个很好的问题)。我会说一个家庭作业问题。为什么不通过执行代码来确定输出?输出将是10,实际上不是。
#include<iostream>
using namespace std;
int &fun()
{
int x = 10;
return x;
}
int main()
{
fun() = 30;
cout << fun();
return 0;
}