局部变量的问题
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;
}
int main()
{
int* p;
p=fun();
int i=*p;
cout<<*p<<endl;
cout<<i<<endl;
getchar();
return 0;
}