#include <iostream>
const char* fun()
{
const char* x = "abc";
std::cout << "x = " << x << "\n";
return x;
}
int main(int arc, char** argv)
{
const char* y = fun();
std::cout << "y = " << y << "\n";
return 0;
}
在我的电脑上运行这个程序会得到以下结果:
x = abc
y = abc
在`fun()`函数中,`x`(一个局部变量)被赋予一个本地创建的字符串字面量的地址,然而当函数返回时,指向`y`的数据与指向`x`的数据相同,尽管`x`已经超出了其作用域。
有人能详细解释一下这里发生了什么吗?