gpt4 book ai didi

c++ - 循环内或循环外的局部变量

转载 作者:搜寻专家 更新时间:2023-10-31 02:22:04 27 4
gpt4 key购买 nike

void main(){
int a=1;

for(int i=0;i<10;i++){
int b=2;
}
}

在循环中,每次循环都会创建变量B,对吧?如果是,我用&操作查看变量b的地址,发现地址完全一样。如果没有重新创建,则 b 应该仍在堆栈中。每次都会在循环中声明一个新的变量b。为什么这里没有发生重定义错误?

最佳答案

每次进入该 block 时,都会重新创建 block 中定义的(非静态)变量。

如果它是局部变量,它可能很容易驻留在 block 的连续条目上的相同地址。对于 int,无需执行任何操作(除了分配空间)即可创建变量。

另一方面,如果您要创建一个类型的对象,其构造函数执行某些操作,则每次进入该 block 时构造函数都会执行任何操作(并且每次执行离开该 block 时都会运行析构函数) .

关于c++ - 循环内或循环外的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30717761/

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