怎么理解函数的返回值(感觉挺有意思,请高手探讨)
int *fun()
{
int a = 5;
return &a;
}
int main()
{
int *a = fun();
cout << *a;//结果是5,结果正确
}
一般的理解:由于a是局部变量,存储在函数所在的栈中,生存期为函数的执行期。
因此,返回其地址是无效的。但实际在调用中,返回的值仍然是正确的。
这意味着两点:
1、栈的空间释放后,还保留该内存地址的值(自己也不确定)
2、5本身在文字常量区,不在栈内,因此返回的是常量5的地址;