我的问题在下面的代码段中的代码注释中标记.
int *foo(){
int a = 10;
int b = 20;
return &b;
}
int *foo2(){
int aa = 44;
int bb = 40;
return &bb;
}
int main(int argc, char* argv[])
{
int *p = foo();
int *p2 = foo2();
int a = 700;
int *b = & a;
// cout<<*b<<endl; /* what & why the difference from adding & removing this line?? */
cout<<a<<endl;
cout<<*p<<endl; /* what & why happened to "p" */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在foo()和foo2()你返回指向局部变量的指针.这些本地具有自动存储,一旦超出范围,使用指向它们的指针是未定义的行为.因此p,p2没有任何用处.它可能会起作用,也可能不起作用.
我不能很好地理解你的问题,所以我希望我能得到这一切.
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |