在C ++中阻塞局部变量

时间:2015-02-09 08:37:52

标签: c++

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

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

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

1 个答案:

答案 0 :(得分:3)

“范围”是一种语言特征,意味着变量仅在周围代码块的边界内可见并且存在于其中(此处:围绕{})。

“Stack”是一种计算架构功能,允许调用函数,在自己的寄存器集上运行,然后,从这些函数返回时,恢复在函数之前保存的原始计算状态调用

因此,这两个概念彼此正交。 C ++根据范围定义哪些变量可访问(或达到其生命周期的结束);编译器为函数调用添加了堆栈框架。