我不太确定我是否理解为什么当我们返回局部随机变量的引用时会出现问题。假设我们有这个例子。
int *myFunc() {
int phantom = 4;
return &phantom;
}
然后通常的说法是,当函数被使用时,变量phantom
的内存在代码行int phantom = 4;
执行后不再可用> 所以不能返回(至少目前我是这么理解的)。另一方面,对于函数,
int myFunc() {
int phantom = 4;
return phantom;
}
整型变量 phantom
的值将返回。 (我将值的返回视为对变量 phantom
的底层指针的取消引用)。
我在这里想念什么?为什么在第一种情况下存在编译错误,而在第二种情况下一切正常??
最佳答案
第一个不返回引用,它返回一个指针。一个指向局部变量的指针,一旦函数结束,该变量将超出范围,给您留下一个指向不再存在的变量的流浪指针。这就是您收到编译器警告(通常不是实际错误)的原因。
第二个代码复制值。一旦 return
语句完成,函数内的局部变量将永远不需要被引用或使用。
关于c++ - 返回引用和返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39942499/