Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我想知道当函数“add”返回对局部变量的引用时,它将如何工作,但它运行正常,没有崩溃_C++ - Fatal编程技术网

C++ 我想知道当函数“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; } 不要返回对局部变量

请先看一下这个代码。我在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;
}

不要返回对局部变量的引用

它可能有效,也可能无效


但有时它会咬你。

因为它是未定义的行为。您不能依赖它工作,而且随着代码的增长,它也不会工作。

这是未定义的行为。大多数情况下,对于像这样的小程序,它是有效的,但当你使用大量内存和递归等复杂程序时,它是未定义的行为。