嗯,他们说在函数或块中声明的变量被称为具有局部范围,即这些变量只能在声明这些变量的函数或块中使用。
但是,在运行以下程序后,我得到了奇怪的结果。
int* ptr = NULL;
void Func()
{
int x = 10;
ptr = &x;
}
int main()
{
Func();
cout << *ptr << "\n"; // prints 10
*ptr = 555;
cout << *ptr << "\n"; // prints 555
return 0;
}
我在main()中访问了变量“x”(在Func()中声明)。我能够在main()中读取和写入此变量。 我在Visual Studio 2015上运行了代码。
发生了什么事?