如何识别范围
How to identify scopes?
所以,我首先要说的是,是的,这是家庭作业,但不,我不只是在寻找答案,我只是想对如何解决这个问题有某种理解。
我正在寻求帮助的问题给出了一个"骨架"C++程序:
int a, b, c, d; //global variables
void Sub1(); //prototype
void Sub2(); //prototype
void main () {
int a, b, c;
. . . <---------- marked point 1
}
void Sub1() {
int b, c, d;
. . . <---------------- marked point 2
while (. . .) {
int c, d, e;
. . . <-------------- marked point 3
}
. . .
} //end Sub1
void Sub2() {
int d, e;
. . . <----------------- marked point 4
}
我遇到的问题是"确定嵌套在另一个范围内的作用域。例如:从第 3 行开始到第 4 行结束的范围嵌套在从第 1 行开始到第 8 行结束的作用域中。
首先,我不明白该示例如何是此类范围的正确示例。 我可能会对作用域到底是什么感到困惑,但我认为因为 Sub1(( 和 Sub2(( 是在任何函数之外声明的,它们将是全局的,因此它们的作用域将从第 1 行到程序末尾。 请帮助我理解为什么它们的范围是从第 1 行到第 8 行,也许我可以理解如何完成这个问题。
您对行号的引用实际上没有意义,但除此之外,范围真的很简单:
考虑您所在的"当前"范围(最内{ }
中的所有内容(,如果您看到一个在大括号内声明的变量具有给定的名称,那么这就是将在此作用域中使用的变量。如果未找到该名称,请查看其父范围,依此类推。如果没有更多的大括号,则参考全局变量。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 提升 ASIO 无法识别计时器对象
- 从udp接收帧对于人脸识别来说太慢
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 模板类无法识别友元运算符
- 在基于范围的for循环中使用结构化绑定声明
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 在C++中查找范围的长度
- 如何设置一个范围来提取我想要获得的信息
- 并行用于C++17中数组索引范围内的循环
- 如何识别范围
- 循环基于无法识别的范围
- 人脸识别器未在此范围内声明
- 如何在庞大的二进制数据中快速识别 1(索引)的连续范围
- 识别posix读取暂停在微秒范围内
- 循环的范围识别错误的类型(C2440)