block 局部变量存储在哪里(堆栈、堆或其他地方)?
int foo() {
int j; /*local variable*/
for(...) {
int i; /* block local variable*/
}
}
如果j
和i
都存储在栈中,我们如何区分它们。即,我们如何将 for
作用域与外部函数作用域分开?
最佳答案
“作用域”是一种语言特性,这意味着变量仅可见并位于周围代码块的边界内(此处:周围的 {}
)。
“堆栈”是一种计算架构特性,它允许函数被调用,在它们自己的一组寄存器上运行,然后,在从这些函数返回时,恢复在函数之前保存的原始计算状态打电话。
因此,这两个概念是相互正交的。 C++ 根据作用域定义了哪些变量是可访问的(或达到其生命周期的终点);编译器根据需要为函数调用添加堆栈框架。
关于c++ - C++中的 block 局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405660/