C++ 我想知道当函数“add”返回对局部变量的引用时,它将如何工作,但它运行正常,没有崩溃
请先看一下这个代码。我在g++编译器上运行它。 我想知道当函数add返回对局部变量的引用时,它将如何工作, 但它运行正常,没有崩溃。为什么?C++ 我想知道当函数“add”返回对局部变量的引用时,它将如何工作,但它运行正常,没有崩溃,c++,C++,请先看一下这个代码。我在g++编译器上运行它。 我想知道当函数add返回对局部变量的引用时,它将如何工作, 但它运行正常,没有崩溃。为什么? int & add (int a,int b) { int c = a + b ; return c ; } int main() { cout<<add(1,2)<<endl; int a = add(1,2); cout<<a<<endl; } 不要返回对局部变量
int & add (int a,int b) {
int c = a + b ;
return c ;
}
int main()
{
cout<<add(1,2)<<endl;
int a = add(1,2);
cout<<a<<endl;
}
不要返回对局部变量的引用 它可能有效,也可能无效
但有时它会咬你。因为它是未定义的行为。您不能依赖它工作,而且随着代码的增长,它也不会工作。这是未定义的行为。大多数情况下,对于像这样的小程序,它是有效的,但当你使用大量内存和递归等复杂程序时,它是未定义的行为。