本地指针发生了什么变化?

Roc*_*cky -6 c++ pointers

我的问题在下面的代码段中的代码注释中标记.

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)

Cor*_*son 5

foo()foo2()你返回指向局部变量的指针.这些本地具有自动存储,一旦超出范围,使用指向它们的指针是未定义的行为.因此p,p2没有任何用处.它可能会起作用,也可能不起作用.

我不能很好地理解你的问题,所以我希望我能得到这一切.

  • +1勇敢.(以及"自动存储") (2认同)