首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

局部变量的有关问题

2014-01-05 
局部变量的问题int* fun(){int i5int* p&icoutpendlreturn p}int main(){int* ppfun()cout

局部变量的问题
int* fun()
{
int i=5;
int* p=&i;
cout<<p<<endl;
return p;
}
int main()
{
int* p;
p=fun();
cout<<*p<<endl;
return 0;
}

不是说局部变量在函数结束时就不存在了吗?上面fun中的那个i应该在调用fun后就没有了,为什么最后还能输出值呢?最后的结果是5.求大神赐教!!
[解决办法]
没有及时擦除而已,你试试看这个就知道了,值的有效性只是延长了一点点而已,本身没有意义。

int main()
{
int* p;
p=fun();
cout<<*p<<endl;
cout<<*p<<endl;
getchar();
return 0;
}

不过你也千万不要这样干,能否在VS以外的情况下,仍然正确是未知的。
int main()
{
int* p;
p=fun();
int i=*p;
cout<<*p<<endl;
cout<<i<<endl;
getchar();
return 0;
}

[解决办法]
我使用mac的clang编译,也是结果等于5.
[解决办法]
内存怎么会不存在?
只不过是将这块内存的处理权利还给操作系统而已,后续这块内存的权利就属于操作系统了。
你这个程序只不过说明操作系统暂时还没有重新使用这块内存(或者分配给其他程序)。

热点排行