C++返回局部变量的引用

zhuanmentiwen zhuanmentiwen 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在好多地方都看到,要避免返回局部变量的引用,因为函数执行完毕后,局部变量将会被销毁,返回引用比较危险。
请按下面的示例:

#include<iostream>
using namespace std;

int& func()
{
int m=9;
return m;
}
int main()
{
int fp=func();

cout<<fp<<endl;

return 0;
}

在上面的代码中,函数func()返回了局部变量m的引用,func()执行完后,按照我的理解,m将被销毁,那么结果输出的fp应该不是9吧。
可能我对C++的引用理解还有误,那么请看下面的返回局部变量指针的例子。

#include<iostream>
using namespace std;

int* func()
{
int m=9;
return &m;
}
int main()
{
int *fp=func();

cout<<*fp<<endl;

return 0;
}

为什么结果仍然是输出9呢?
最近被C++的内存管理搞晕了,大家有好的资料或者书籍文档推荐下,谢谢了。
...全文
评论 20
收藏 已收藏
分享
返回顶部
zhuanmentiwen
C++ 语言 65,214 成员 250,514 内容