可能重复:
Can a local variable's memory be accessed outside its scope?指针在C++中的局部变量
我有以下在C++
int* foo()
{
int myVar = 4;
int* ptr = &myVar;
return ptr;
}
int main()
{
printf("val= %d", *foo());
return 0;
}
输出I得到的代码是:
val = 4
所以我的问题是因为myVar是一个局部变量,它不应该在函数返回后消失吗?并且不应该指向它的指针也是空指针?
哈!现在你提到再次调用该函数。我刚做了一个小实验,另一个问题突然出现了!:D所以我刚刚修改我的代码有点像这样 'code int main() { printf(“* bar =%d \ n”,foo()); printf(“* bar2 =%d \ n”,foo()); 系统(“暂停”); return 0; } ' bar和bar2具有相同的值! :O – 0x56794E 2012-04-06 02:47:26
这是正确的,每个声明的变量将被分配一个常量内存位置。该位置在整个程序执行过程中不会改变。但是,正如user966379所提到的那样,它不保证是所有示波器的唯一位置。 – 2012-04-06 10:06:40