C++不可以返回局部变量的引用或指针

  • Post author:
  • Post category:其他


返回引用事实上是返回变量的地址。

所谓的不可以返回局部变量的引用或指针,

指的是不能返回局部变量的引用或地址给引用或指针

。事实上还是看该地址的位置是否在该函数的栈区,若是在栈区,函数调用结束,该地址就被释放了。尽管会出现栈地址上的值没被销毁的问题,可能是该栈区还没被其他的函数堆栈掉。

1、

int  & fun()


{


int a = 10;


return a;


}


不可以,尝试返回 a 的地址给引用变量,a是存在栈里的,函数结束调用栈被销毁。

	std::string  & getstr()
	{
        //1 不可以,虽然buffer是在字符常量区,但是这个函数返回的是string类型,string对象还在栈上
		char *buffer = "abcdef";
		return std::string(buffer);
        //2
		//string str = "1213";
		//return str;
	}

2、

int  * fun()




版权声明:本文为u010177010原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。