函数返回局部栈变量指针的疑问
#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;
}