「你说这些开发C语言的人一天天的弄这么多区不累么?那一个区挨着放它不香么?只是听这些概念就把人弄晕了,更别说是理解……」
我有些不满,没忍住抱怨了几句。
「你现在觉得麻烦的东西可都是前人踩了很多坑含着血泪总结出来的,你没有经历过采坑的过程,自然没有办法一下子理解。就像很多人不明白计算机是如何由一个个开关发展到现在这种状态的,这是因为少了时间的的积累。
如果我们亲身经历了计算机在这近百年的发展、迭代后,就能够理解为什么会演变成为现在的体系了。
所以啊,等到你们对C语言这个体系有了更深层次的理解后,兴许就慢慢能够体会到这其中的精妙所在。
这里我就当给你扩展一下知识,在你们脑中留下一点点印象,等到以后你们想要深入了解的时候也有个突破点。」
对于我的抱怨,老爹只是一笑了之。我挺直了背,让注意力更加集中了几分。既然老爹这个样子说,看来这个知识点真的比较重要。
「首先是代码区,它在内存中位置的地址编号数值相对于其他区较小。顾名思义,代码区里面存放的数据就是我们写的代码,当然了,是编译成了机器语言的代码。
CPU从程序入口main函数开始加载代码数据,按照顺序执行我们写的程序语句。
这部分内存是在程序运行结束后,由操作系统自己释放。因此,不在我们的管理范围中。」
「老爹这不说得很清楚嘛,似乎没有说得那么难以理解啊。」
我暗自思忖。
「接下来就是常量区,在说常量区之前,我们得先来说说什么叫做常量。常量常量,就是固定不变的量,刚好我们平时使用的变量相对。
当我们声明一个了一个变量,在初始化后还是能够改变它的值,但是常量就不行了,一旦声明初始化后,它的值就固定不变,不能再修改。
虽然我们之前没有学习过常量,但是却一直在用,比如说一个具体的数字、字符和字符串:
int i = 123;
char c ='A';
char[] str =“hello world“;
这里的123、'A'和“hello world“都是常量,是没有办法修改的。」
「老爹不对啊,我们明明可以修改i、c和str的值啊!」
我十分疑惑道。
「哈哈,很多人在都和你有相同的想法,包括我当年学习这部分知识的时候也觉得不可思议。
注意哟,我刚刚说的是123、'A'和“hello world“都是常量,可没有说i、c、str是常量哦。」
「这不是一回事儿么?」
我越发迷糊了。
「当然不一样,咱们举个简单的例子来说明这个问题。
你们看哈,我这儿有一张面值为100元的毛爷爷,然后我把它放进我的钱包。如果我这个钱包是一个变量的话,那么这张100元的毛爷爷就是变量中的值了,这能够理解吧?」
见我和小弦子同时点头,老爹接着说道:「现在呢,我因为去超市买了五包薯片,用了50块钱,然后超市收银的小姐姐找了我50元钱,那么现在钱包这个变量的值就变成了50,这没问题吧?」
「嗯嗯」