C++变量作用域(详解版)

C++变量作用域(详解版),第1张

概述C++ 允许在程序中几乎任何地方创建变量。常见的做法是在函数顶部定义函数的所有变量,也就是在标记主体开始的开放大括号之后。当然,在一些更长的程序中,变量有时在程序使用它 C++ 允许在程序中几乎任何地方创建变量。常见的做法是在函数顶部定义函数的所有变量,也就是在标记主体开始的开放大括号之后。当然,在一些更长的程序中,变量有时在程序使用它的位置附近定义,只要在使用之前定义它们就没问题。

我们知道,使用大括号包围一个或多个编程语句即定义了一个代码块。函数 main 的主体必须被大括号包围,它就是一个代码块。与 if 或 if-else 语句中的 else 相关联的一组语句也同样是代码块。

无论如何,变量都需要定义在代码块的内部,也可以在任何代码块内定义一个变量。变量的作用域就是它的定义语句和块的闭括号之间的那一部分。因此,在函数顶部定义的变量,其作用域实际上就是整个函数,而内部块中定义的变量,其作用域就是该块。

下面的程序在后面定义了它的变量:
#include <iostream>using namespace std;int main(){    //Constants for minimum income and years    const double MIN_INCOME = 35000.0;    const int MIN_YEARS = 5;    // Get the annual income    cout << "What is your annual income? ";    double income; // Variable deFinition    cin >> income;    if (income >= MIN_INCOME)    {        //Income is high enough,so get years at current job        cout << "How many years have you worked at your current job? ";        int years; // Variable defined insIDe the if block        cin >> years;        if (years > MIN_YEARS)            cout << "\nYou qualify.\n";        else            cout << "\nYou must have been employed for more than "<< MIN_YEARS << " years to qualify.\n";    }    else // Income is too low    {        cout << "\nYou must earn at least $" << MIN_INCOME << " to qualify.\n";    }    return 0;}
程序的第 11 行中定义了 income 变量,它在标记 main 函数代码块的大括号内,所以它的作用域包括第 11〜28 行,也就是从它被定义的行到 main 函数封闭大括号的位置,在这个作用域内它都可以被程序使用。

years 变量在第 18 行中定义,包围它的大括号标记的代码块是由 if 语句有条件地执行的代码块,所以它的作用域只包括第 18〜22 行。也就是从它被定义的点到关闭if代码块的大括号之间的行。这些在一组大括号内定义的变量被称为具有局部作用域或块作用域。在局部作用域之外,这些变量是不可见的,也不能被使用。

注意,当一个程序正在运行并且它进入构成一个变量作用域的代码段时,就称该变量进入作用域。这只是意味着变量现在可见,程序可以引用它。同样,当一个变量离开作用域时,它就不再能敢使用。
同名变量当块嵌套在另一个块中时,内部块中定义的变量可能与外部块中定义的变量具有相同的名称。虽然一般认为这样做不妥,因为它很可能会导致混乱,但其实这样做是被允许的。当内部块中的变量进入作用域时,外部块中的变量变为“隐藏”,不能使用。下面的程序说明了这一点:
// This program uses two variables with the same name.#include <iostream>using namespace std;int main(){    int number; // define a variable named number    cout << "Enter a number greater than 0: ";    cin >> number;    if (number > 0)    {        int number; // define another variable named number        cout << "Now enter another number: ";        cin >> number;        cout << "The second number you entered was ";        cout << number << endl;    }    cout << "Your first number was " << number << endl;    return 0;}
程序输出结果:

Enter a number greater than 0: 2
Now enter another number: 7
The second number you entered was 7
Your first number was 2

此程序中有两个单独的变量名 number。一个在外部块中的第 7 行上定义,另一个在内部块中的第 12 行上定义。内部块中的 cin 和 cout 语句(属于 if 语句)只能与该块中定义的 number 变量一起使用。一旦程序离开该块,内部 number 离开作用域,将再次显示外部 number 变量。

警告,尽管在嵌套块中定义变量是完全可以接受的,但是在命名时应该避免与外部块中的变量相同,毕竟这样太容易将一个变量与另一个变量混淆了。
总结

以上是内存溢出为你收集整理的C++变量作用域(详解版)全部内容,希望文章能够帮你解决C++变量作用域(详解版)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231371.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存