局部变量保存相同的内存地址

Jay*_*esh 3 c++ variables memory-address

以下程序打印两个不同变量的地址.

#include <iostream>
using namespace std;

void f1()
{
    int i,k;
    cout<<"f1 : "<<&i<<endl;
}

void f2()
{
    int j;
    cout<<"f2 : "<<&j<<endl;
}

int main() {
    f1();
    f2();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现场演示

当我在GCC上运行这个程序时,我想知道,两个变量都有相同的地址.

为什么两个变量都保持地址相同?

编辑:

void f1()
{
    int i = 10;
    cout<<"f1 : "<<&i<<endl;
    cout<<"value of  : "<<i<<endl;
}

void f2()
{
    int j;
    cout<<"f2 : "<<&j<<endl;
    cout<<"value of j : "<<j<<endl;
}

int main() {
    f1();
    f2();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现场演示2

在这个例子中,如果我分配值10i然后j同时打印10.我认为这是无效的,因为它是未j初始化的.

Que*_*tin 13

因为它们的生命周期不重叠,所以编译器能够重用它们的存储.