C++ 如何识别作用域?

C++ 如何识别作用域?,c++,scope,C++,Scope,所以,我首先要说,是的,这是家庭作业,但不,我不仅仅是在寻找答案,我只是想了解如何解决这个问题 P>我正在寻找的帮助给出了一个“骨架”C++程序: int a, b, c, d; //global variables void Sub1(); //prototype void Sub2(); //prototype void main () { int a, b, c; . .

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

<> P>我正在寻找的帮助给出了一个“骨架”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
}
inta、b、c、d//全局变量
void Sub1()//原型
void Sub2()//原型
空干管(){
INTA、b、c;

您对行号的引用并没有真正意义,但除此之外,范围界定非常简单:


考虑您所处的“当前”范围(最内部
{}
中的所有内容)如果在花括号内看到一个用给定名称声明的变量,则该变量将在此作用域中使用。如果找不到该名称,则查看其父作用域,依此类推。如果没有更多的花括号,则引用全局变量。

大致指代“
{
”和“
”之间的所有变量
'是一个范围。我不太明白
第3行、第4行、第1行和第8行在你的问题中也指的是什么,但范围基本上是介于
{…}
之间的东西。在任何卷曲之外,你都有全局范围,有时
{}
被省略(例如,
if
语句后面的一行)。您发布的代码有几个明确的范围示例(以及它们的问题),恐怕它们不是您想象的那样。您需要回顾您的课程笔记,如果这对您没有帮助,您需要与您的讲师交谈。附上
{
}
不一定表示作用域。名称查找是一个独立的概念,而不是作用域的定义。有关行号的说明来自讲师。我想我会和她谈谈这件事,看看是否有印刷错误或其他什么。这样说是否正确“从第14行开始到第15行结束的作用域(while循环的内容)嵌套在从第11行开始到第17行结束的作用域内(函数Sub1()的内容)。”