泡泡中文

最新网址:www.xpaozw.com
字:
关灯护眼
泡泡中文 > 程序媛养成计划 > 第三十六章 作用域(下)

第三十六章 作用域(下)

「被释放掉了,为了证明这一点,我们在刚才的代码中添加一句代码,同时也向你们介绍&』的第三个功能,取地址。

int ieldArea()

{

int a = 100;

or(int i = 0; i < 10; i++)

{

int b = i;

print(“b 的地址是:%d“,&b);

}

}

之前我们已经学过了&』的两种用法,一种是用于两个数做位与运算,一种是用来做逻辑与,而这种放在一个变量的命前面的操作,叫做取地址。

至于什么叫地址,我简单的说一下。

最开始我给你们说过,电脑的最基本组成是成千上万亿个开关构成的,但是虽然都是开关,却也分不同的类别,主要来说分为三种。

第一种CPU,它是电脑的核心,它的里面的开关状态转换速度非常快,但是造价也非常贵。

第二种硬盘,就是我的电脑』里边什么C、D、E、F盘,用来保存文件,代码这些。硬盘的开关状态转换就很慢了,好处是便宜。

当我们要运行程序的时候,CPU需要从硬盘中读取编译成机器语言的.exe,但是硬盘的读写速度相对于CPU来说太慢了,根本没有办法让它的效率得到有效的发挥。

于是就引入了第三种——内存,内存的开关状态转换速度在CPU和硬盘中间,造价也是如此,所以它就作为了CPU和硬盘的一个缓冲介质。

当CPU要从硬盘里边读写数据的时候,就让内存先去加载,然后CPU再从内存中读取。CPU在读取内存里面的数据时,内存又可以去硬盘中读取后面的内容,这样就形成了一个流水线,CPU的执行效率就大大提高了。

所以,程序要正常运行,就需要依靠内存。一旦内存不够用了,电脑就会变得特别卡,甚至于死机。你们看,桌面边边这个显示百分比的圆球就是电脑管家显示的内存使用情况。

理论上来说,内存的容量越大,就可以开越多的程序,但是也不是越大越好。因为程序的执行是由CPU来调度的,假设CPU的极限是调度1000个程序,而内存的容量可以供1500个程序使用也是没有意义的。

现在主流的配置一般都会给电脑搭配16GB的内存,这是什么概念呢?1GByte=1024MByte=1024x1024KByte=1024x1024x1024Byte。在最开始和你们说过,为了方便管理,个开关被统一为一个字节Byte,你们自己算算,这是有多少个字节。

为了便于管理,开发计算机的那些科学家就给每一个字节编了一个号,而这个编号就叫内存地址。我们用&』获取的正是一个变量在内存中的地址。」

老爹一边说,还一边将我的电脑机箱盖子打开了,和我们介绍CPU、内存条和硬盘长什么样子。这些知识虽然看上去和编程没有关系,但是却在编程中起着举足轻重的作用。

老爹在介绍完了之后,我和小弦子将ieldArea函数给运行了一下,结果让我傻眼了,因为10次打印出来变量b的地址居然是一样的!

我重复了运行了好几次,虽然每次运行b的地址和上一次的不一样,但是在这10次循环中的地址却是一模一样。

再三检查后,我确认不是自己的问题,于是看向了小弦子,看看他那边是个什么情况。

结果小弦子的情况和我完全相同!这是什么情况?难道是老爹讲错了?

我和小弦子都看出了对方眼里的疑惑,我们同时看向了老爹。

老爹愣了一下,然后在看了我和小弦子程序运行结果后陷入了沉思。

紧接着他在自己电脑上运行了一下,结果也是一样的。

「对不起,孩子们,这里应该是我讲错了。从我读大学那个时候就一直以为在or循环体里面声明的变量应该是每次都是重新生成的,谢谢你们纠正了这个错误。」

说完,老爹郑重地向我们道了歉。

「有很多事情,一直便是如此不见得都是对的,就算是目见耳闻都不一定是真的,通过这件事你们也应该能够看出来了。所以啊,我希望你们保持一颗质疑、求真的心。

好了,咱们接着讲作用域。变量的作用域除了通过大括号来判断,还有几种比较特殊的情况:

第一种,or循环小括号中定义的变量。

or(int i = 0; i < 10; i++)

{

}

这里的变量i它的作用域就是整个or,所以我只能在or结构内使用它,一旦脱离or的作用域,它就被释放了。

『加入书签,方便阅读』
热门推荐
好莱坞灯塔白骨天尊开局获得唯一帝器和最强吞噬天赋让你下山娶妻,谁让你当天师的?程序员的游戏人生冒牌女科学家世情录恋综之后,才收到心动信号被误会就变强,我招惹全世界平安夜的钟声
网站地图