赞
踩
1.作用域:
通常来说,一段程序代码中所用到的名字并不总是有效 / 可用 的。而限定这个名字的可用性的代码范围就是这个名字的作用域。俗话说的好,“能力越大,责任也就越大。”,当变量的能力越大时,它能做的事情就很多,涉及的范围也很广,当变量能力越小时,则相反。
2.生命周期:
概念:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
生命周期,字面意思上我们可以理解为一个人的寿命期限,就好比说一个人从刚生下的充满活力婴儿到油尽灯枯的过程,从有到无,从生到死。变量的生命周期也是如此,从创建下占用内存开始,一直持续到内存的释放。变量保留其值的时间被称为变量的生命周期。当变量失去自己的作用域时,它便不再具有值。而上面我们所说的作用域,它就决定了变量的生命周期。说明作用域不同,生命周期也就不一样。
生命周期好比孙悟空用金箍棒给唐僧画的一个圈圈,把唐僧保护住,不让妖怪抓住他,但唐僧也只能呆在圈子里,出不去。而C中的花括号便是起到这样的效果。
对于初学者来说,文字的讲解也只能诉说一部分内容,我们并不能get到具体的点。接下来,我们进入VS中试验一下。
a. 全局变量的作用域是整个工程。
b. 全局变量的生命周期是:整个程序的生命周期。
"全局"的意思其实就是纵观全局,它是定义在代码块({ })之外的变量。我们先创建一个主函数,在主函数的外围创建一个变量a,在主函数内我们创建一条语句去输出变量a的值,运行后发现a的值为100。
之后我们在main函数外面去创建一些函数test1,test2(这里的函数,我们可以称之为新开辟的一个范围,其实main中也是一个范围!),再去输出变量a的值,我们可以发现,结果都是100。原因就在于变量a的位置,a处在众多范围的最外围,就好比上帝视角一般,可以清楚的看到每一个范围中的内容,这便是纵观全局。
a. 局部变量的作用域是变量所在的局部范围。
b. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
所谓局部,它只是全局中的一部分东西。它则是定义在代码块({ })之内的变量。如图所示,我在主函数中创建了一个变量num1,将它放在一对花括号里,这两个花括号构成了一个范围,整体上去看就是在一个大括号里面又放了一个小括号,那么当在花括号的外围去输出num1时,系统显示报错,就是因为num1只处在局部范围中。
看完了这些我们就可以明白,局部变量只可作用到它本身的范围中,不能影响到全局的范围中,而全局的变量可以作用到到任何一个局部中。这就是作用域的意义。而局部变量的生命周期也只会随着花括号的建立而出现,到另一个花括号的结束而消失。
3.还有一点需要注意的是:当局部变量与全局变量的名字相同的时候,在范围中局部变量会被优先选择,就好比英语中的就近原则一个道理。所以建议不要采用两个相同名字的全局部变量,不仅容易搞混,还容易产生bug。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。