C 函数返回参考

新手上路,请多包涵

为什么我不能/不应该将对局部变量的引用返回给函数?是不是因为函数执行完成后临时变量会自动销毁?

 const string & wrap(string & s1, const string & s2){
    string temp;
    temp = s2 + s1 + s2;
    return temp;
}

这个如何:

 const string & wrap2(const string & s1, const string & s2){
    return (s2 + s1 + s2);
}

原文由 Pwnna 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 355
2 个回答

在函数内部本地声明的变量在堆栈上分配。当一个函数返回给调用者时,变量所在的堆栈空间被回收并且不再可用,并且那里的变量不再存在(它们确实存在,但你不能使用它们,它们可以是随时覆盖)。所以,是的,基本上你说的。

原文由 Seth Carnegie 发布,翻译遵循 CC BY-SA 3.0 许可协议

就是这样。局部变量会在超出范围时 消失 并被销毁。如果您返回一个引用或指向它的指针,该引用或指针将指向垃圾,因为该对象将不再存在。

原文由 QuantumMechanic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏