C++中阶教程简介:
标题如此,但此系列面向任何编程语言或领域的观众,所有的计算机知识在原理上都是相通的,
旨在尽己之力,授人以渔。
学习需求:
1. 任意一门现代编程语言的语法基础
2. 英文基础(术语皆会使用英文,培养大家将来Google与阅读文档的能力)
3. 心如止水,持之以恒
此节内容是为学习指针和内存管理打好基础,绝大多数现代语言都是隐藏了这些功能,但了解其机理的重要性无与伦比
当我们说内存(Memory)时,一般情况下是指RAM,即Random Access Memory,意味着你可以使用任意顺序去访问内存上的任意位置。其机制和1D Array完全一致。如下图对比:
1D Array有总房间数length间,每个房间装1个element,每个房间有对应门牌号index
Memory有总房间数size间,每个房间装1个location,每个房间有对应门牌号address,
每个房间里住的是1个byte(1byte = 8bit)
让我们来深入地看一下CPU是怎样与Memory运转的
CPU的核心电路有特殊的存储空间叫Registers,可以把它们理解为CPU用来做事情的N只手
int c = b + a;
首先c b a会存储到Memory中,CPU会从Memory中读取它们然后拿到自己手里
在CPU的眼里,c b a都是不存在的,它只关心值是多少:
1. CPU读取address 27577,拿到9,放到一个Register里、CPU读取address 27576,拿到60,放到另一个Register里
2. CPU将一个Register的值传递给另外一个,并在另外一个上存储运算结果69
3. CPU将69存储到address 27578 (至此int c = b + a;
执行结束)
小结:
RAM就是byte组成的Array,每个byte对应1个address,每个byte由8个bit组成
为了能够充分理解byte和bit,我们需要先搞清楚二进制(Binary)的概念:
电子元件有两种工作状态:ON OFF
bit是一种能够表达两种情况的符号或数值,也就是说bit可以