gpt4 book ai didi

c++ - 这些本地函数的返回地址之间有什么区别?

转载 作者:行者123 更新时间:2023-11-30 01:26:26 28 4
gpt4 key购买 nike

我有以下函数(用 Visual C++ 2005 编写)

int &getInt_1()
{
int a = 5;
int &p = a;
int p1 = p; // Line 1
return p1;
}

int &getInt_2()
{
int a = 5;
int &p = a;
return p;
}

据我所知,以上两个函数都返回局部变量的地址。如果我是对的,那么我有一些问题如下:

  1. 以上功能有什么区别?为什么 getInt_1() 会收到编译器的警告(“返回局部变量的地址”)而 getInt_2() 不会?

  2. 第 1 行 是什么意思?在 第 1 行 之后,p1 是否也成为对 a 的引用?

最佳答案

  1. getInt_1 返回对 p1 的引用。 getInt_2 返回对 a 的引用。两者都是相同的未定义行为,不要这样做。 VC 应该对两者都给出警告。
  2. 不,您只需复制值。

关于c++ - 这些本地函数的返回地址之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10410208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com