读书人

函数回到局部栈变量指针的疑问

发布时间: 2013-01-21 10:15:38 作者: rapoo

函数返回局部栈变量指针的疑问
#include<iostream>
using namespace std;

int * pp(int i){
int p=i;
int* p1=&p;
cout << p1 << endl;
return p1;
}
int main()
{
int x = 0;

int* p = pp(x);

cout << p <<endl;

return 0;
}

不是说函数不能返回指向局部栈变量的指针吗?为什么值能正确返回?

#include <iostream>

using namespace std;

int * pp(int i){
int p=i;
int* p1=&p;
cout << *p1 << endl; //解引用显示
return p1;
}

int foo(int i) {
int x = i * 100 + 200;
cout << x << endl;
return x;
}

int main()
{
int x = 1;

int* p = pp(x);

foo(100);//增加一个函数调用,确保栈覆盖掉。

cout << *p <<endl; //解引用显示

return 0;
}

读书人网 >C++

热点推荐