在C++中阻塞局部变量

block local variables in C++

本文关键字:局部变量 C++      更新时间:2023-10-16

块本地变量存储在哪里(堆栈、堆或其他地方)?

int foo() {
  int j;  /*local variable*/
  for(...) {
    int i; /* block local variable*/
  }
}

如果ji都存储在堆栈中,我们如何区分它们。也就是说,我们如何将for范围与外部功能范围分开?

"Scope"是一种语言特性,意味着变量仅可见,并且位于周围代码块(此处:周围{})的边界内。

"堆栈"是一种计算体系结构功能,它允许调用函数,在它们自己的寄存器集上操作,然后在从这些函数返回时,恢复函数调用前保存的原始计算状态。

因此,这两个概念是相互正交的。C++根据作用域定义哪些变量是可访问的(或达到其生命周期的末尾);编译器根据函数调用的需要添加堆栈帧。