在C++中阻塞局部变量
block local variables in C++
块本地变量存储在哪里(堆栈、堆或其他地方)?
int foo() {
int j; /*local variable*/
for(...) {
int i; /* block local variable*/
}
}
如果j
和i
都存储在堆栈中,我们如何区分它们。也就是说,我们如何将for
范围与外部功能范围分开?
"Scope"是一种语言特性,意味着变量仅可见,并且位于周围代码块(此处:周围{}
)的边界内。
"堆栈"是一种计算体系结构功能,它允许调用函数,在它们自己的寄存器集上操作,然后在从这些函数返回时,恢复函数调用前保存的原始计算状态。
因此,这两个概念是相互正交的。C++根据作用域定义哪些变量是可访问的(或达到其生命周期的末尾);编译器根据函数调用的需要添加堆栈帧。
相关文章:
- 使用的未初始化局部变量'Quick'
- 修复未初始化的局部变量错误
- 局部变量保留函数中的值
- 如何使用 C++ 中的继承函数访问派生类中的局部变量
- 将引用分配给局部变量,如果局部变量超出范围,它会超出范围吗?
- Gnuplot_i.hpp C++接口绘制局部变量而不是文件
- 如何在函数外部访问函数中局部变量的值?
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- C++中静态方法的局部变量范围
- 未初始化的局部变量错误甚至认为我初始化了它(C++)
- 离开范围后如何保护局部变量的值?
- 局部变量名称冲突
- C++ lambda:如何'freeze'局部变量的值?
- 我应该使我的局部变量常量还是可移动的
- 获取具有静态局部变量的绑定/推断捕获 lambda 的函数指针
- 全局和局部变量初始化与 constexpr 的差异背后的基本原理
- 返回对局部变量 - C++ 的引用
- 是否可以影响 C++ 中回调函数的局部变量?
- 警告 C4101 未引用的局部变量
- 线程局部变量的初始化顺序