返回对局部变量的引用
在 C 中,通常不鼓励返回对局部变量的引用,因为它可能导致悬空参考。然而,在某些情况下,它可能仍然有效,如下例所示:
int& foo() { int i = 6; std::cout << &i << std::endl; return i; } int main() { int i = foo(); std::cout << i << std::endl; std::cout << &i << std::endl; }
此代码编译并运行没有错误,并且打印:
0xfefef2 6 0x7ffe82600698
相反正如预期的那样,在 foo() 调用返回后,main() 中的变量 i 仍然保留值 6。这是因为,在这种情况下,编译器已将局部变量的生命周期延长到 foo() 函数末尾之后。
此行为是特定于实现的,不应依赖。一般来说,避免返回对局部变量的引用被认为是很好的做法。如果需要返回局部变量的值,最好按值返回。
以上是为什么通常不鼓励返回对本地 C 变量的引用?的详细内容。更多信息请关注PHP中文网其他相关文章!