首页 理论教育 作用域和块作用域-零基础C++从入门到精通

作用域和块作用域-零基础C++从入门到精通

时间:2023-08-20 理论教育 版权反馈
【摘要】:运行结果如图4.1.1所示:图4.1.1全局变量和局部变量在示例中,我们先声明了一个全局变量,并在main函数中打印,而当我们在main函数中声明了另一个同名的局部变量之后,打印出来的值就成了局部变量的2。可以说,局部变量的作用域或者生命周期是从定义到所在块结束的这段代码,而内层的局部变量会屏蔽外层的同名变量。动手写4.1.4动手写4.1.4展示了自定义块对作用域带来的影响。

作用域和块作用域-零基础C++从入门到精通

在现实中,凡事都有其适用范围,而在计算机语言的世界中,变量也都有作用域(Scope)。所谓作用域,就是变量的可见范围。在某个作用域中定义了变量之后,我们可以使用、访问这个变量,但是出了这个作用域之后,我们就无法使用这个变量了。之所以要有作用域的概念,也是出于程序结构化的考虑。如果在一个很长的程序中,我们能在任何地方取用和修改任何变量,那样我们在程序末尾的任何一个改动都有可能会影响到程序开头。试想一下,如果一家公司的账本放在公共区域,所有人都能对其进行修改,那将会是一个多么混乱的情形!

程序的作用域是自顶向下定义的,在最上级首先有一个全局作用域(Global Scope)。 全局作用域定义的变量可以在文件中的所有地方被访问,它也叫作全局变量(Global Variable),而其他非全局的变量叫作局部变量(Local Variable);而在其下,我们会用花括号({})定义一个个的块(Block),每个块都定义了一层的作用域,而块中又能嵌套块,于是就有了层级的作用域结构。首先,我们来看一个最基本的作用域示例:

动手写4.1.3

动手写4.1.3展示了基本的作用域的效果。运行结果如图4.1.1所示:

图4.1.1 全局变量和局部变量

在示例中,我们先声明了一个全局变量,并在main函数中打印,而当我们在main函数中声明了另一个同名的局部变量之后,打印出来的值就成了局部变量的2。可以说,局部变量的作用域或者生命周期(Lifetime)是从定义到所在块结束的这段代码,而内层的局部变量会屏蔽外层的同名变量。函数虽然不完全是一种块,但在代码分析中一般级别会高于块,我们也可以把花括号中的内容看成块,而其中定义的也是局部变量。(www.xing528.com)

除了函数自带的局部作用域之外,我们也可以自己用花括号来定义一个块。

动手写4.1.4

动手写4.1.4展示了自定义块对作用域带来的影响。运行结果如图4.1.2所示:

图4.1.2 自定义块

通过观察某一行输出语句打印出的layer的值,我们可以看到在不同块中声明的同名变量的影响范围,以及在块有嵌套的时候只有最里面的变量是可见的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈