是否可以使用指向"if"语句中声明的变量的地址的指针

che*_*ing 2 c++ variables pointers if-statement memory-address

是否可以使用指向"if"语句中声明的变量的地址的指针?示例如下:

...
int *pTest = 0;
if (...)
{
  int x = 10;
  pTest = &x;
}
else
{
  int x = 100;
  pTest = &x;
}
...
// use pTest 
Run Code Online (Sandbox Code Playgroud)

Pau*_*ans 6

问题是指针的寿命大于指向的对象的寿命.这闻起来很糟糕,你应该重新考虑你想要做的事情.

  • @chenming - 当您创建无效程序时,C++不会做任何事情.编译器不必告诉你,系统可以做任何适合它的工作.在通常的系统中,自动变量位于"堆栈"上,有些可能是内存中从堆栈中弹出的变量值不会被覆盖或返回给操作系统.所以你可以自由地访问那里的垃圾,这恰好是你写到该位置的最后一件事.您可能没有声明任何新变量,也许编译器将它们全部保留并且没有解开该变量 (4认同)
  • @chenming因为你得到了可怕的*未定义的行为*.任何事情都可能发生.它可以工作.该程序可能崩溃.你的冰箱可能被搜查! (3认同)