gpt4 book ai didi

c++ - 不同 block 作用域中的c++变量具有相同的地址

转载 作者:行者123 更新时间:2023-12-01 14:43:46 26 4
gpt4 key购买 nike

在下面的代码#3和#4中,打印'int i'的相同地址
谁能描述这是如何工作的?
它发生在某些g++中而不是vc++中

#include <iostream>

int i = 0;

int main()
{
std::cout << "#1: " << &i << std::endl;

{
int i;
std::cout << "#2: " << &i << std::endl;

{
int i;
std::cout << "#3: " << &i << std::endl;
}

{
int i;
std::cout << "#4: " << &i << std::endl;

{
int i;
std::cout << "#5: " << &i << std::endl;
}
}
}
}

如果我运行上面的代码,结果如下
#1: 0x601194
#2: 0x7ffc027b5154
#3: 0x7ffc027b515c
#4: 0x7ffc027b5158
#5: 0x7ffc027b515c

最佳答案

Could anyone describe how this works?



变量被销毁后(对于自动存储变量,其发生在它们的块结束时),其内存可以再次重用。这样一来,您会看到-情况#3的 i在其块终止时被销毁,并且该内存稍后再次重用(在这种情况下,碰巧#5的 i重用了相同的内存)。

关于c++ - 不同 block 作用域中的c++变量具有相同的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59484364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com