c++ - C++中的 block 局部变量

标签 c++

block 局部变量存储在哪里(堆栈、堆或其他地方)?

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

如果ji都存储在栈中,我们如何区分它们。即,我们如何将 for 作用域与外部函数作用域分开?

最佳答案

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

“堆栈”是一种计算架构特性,它允许函数被调用,在它们自己的一组寄存器上运行,然后,在从这些函数返回时,恢复在函数之前保存的原始计算状态打电话。

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

关于c++ - C++中的 block 局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405660/

相关文章:

c++ - 这是对 dynamic_cast 的正确使用吗?

c++ - 如何从预编译的 dll 中删除 list

c++ - 在 C 和 C++ 中从 jpeg 读取黑白像素作为数组

c++ - 模板的条件编译

c++ - 自定义 Unique_ptr 删除器,控制删除

c++ - 在 C++ 中访问 vector 的元素?

c++ - 在 Windows 上从源安装 GLFW

c++将一个字符串中的一个字符附加到另一个字符串

c++ - PCL : PCLvisualizer multiple point clouds (XYZ) in same viewport with different colours

c++ - 使用引用而不是指针可以解决 C++ 中的内存泄漏问题吗?