c++ - 范围是否存储在堆栈中?

标签 c++ scope stack

我遇到了这个语句( source ):

means putting the function calls and scopes in a stack

但是如何/为什么要存储范围?

最佳答案

该声明的措辞可以更好。您需要首先进行一些观察。

  1. 范围是一种语义构造。它定义了可以在何处使用名称(变量、类型、函数等)。以及该名称所指代的内容。

  2. 范围有不同类型。相当多的只是编译时的事情。例如,命名空间和类也定义了范围。

  3. 函数也定义作用域,但函数是“运行”的。因此,它们的上下文必须具有某种运行时表示形式。

  4. 递归需要调用相同的函数,但每次重入调用的函数上下文必须不同。

最后一点就是为什么经常使用“调用栈”来实现函数调用。每个堆栈记录都与正在运行的函数的上下文相关。因此,函数作用域中的名称将引用调用堆栈上的项目。

关于c++ - 范围是否存储在堆栈中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47177856/

相关文章:

c++ - 取消定义已定义的头文件/C++

c++ - boost::hana 如何检查类型是否为 std::optional?

javascript - 尝试理解 javascript 中的 `this`

javascript - 编写函数的不同方式会在 JavaScript 中带来不良影响吗?

java - 我需要一些有关 Java 撤消功能的帮助

c++ - 如何使 std::vector 类型安全

c++ - 在 View 中用 ID 替换字符串的简单方法

java - @Scheduled 中的 Spring session 范围对象

swift - 我怎样才能定义这个堆栈结构?

c - 缓冲区溢出问题中的初始化顺序问题