如何识别范围?

问题描述 投票:-1回答:1

所以,我首先要说是的,这是家庭作业,但不,我不只是在寻找答案,我只是想了解如何解决这个问题。

我正在寻求帮助的问题给出了一个“骨架”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行,也许我可以理解如何完成这个问题。

c++ scope
1个回答
-1
投票

你对行数的引用并没有多大意义,但除此之外,范围很简单:

考虑一下你所在的“当前”范围(内部最大的{ }中的所有内容)如果你看到一个在给定名称的花括号内声明的变量,那么这就是将在这个范围内使用的变量。如果找不到该名称,请查看其父作用域,依此类推。如果没有花括号,那么请参考全局变量。

© www.soinside.com 2019 - 2024. All rights reserved.