我想知道为什么在调用函数时不会重新创建局部变量?
#include <iostream>
using namespace std;
void func(void)
{
int a = 0;
cout << &a << endl;
}
int main(void)
{
func();
func();
func();
func();
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么变量a每次都映射到同一个内存地址?
标准未定义局部变量的地址.从一个呼叫到下一个呼叫可能是相同的,或者它可能是不同的.
在这种特殊情况下,使用此代码并在您的机器和编译器上,地址很可能是相同的,因为每次func调用它都会被调用main,因此堆栈每次都布局相同.如果您要从其中调用其他函数main然后调用func,则该地址很可能会有所不同.
但是,不能依赖此行为.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |