数组
我们站在汇编的角度基本上没有数据结构一说,只有纯数字。要么传地址,地址也是一些整数,要么就是把内存中一些字节从寄存器搬到内存或者从内存搬到寄存器或者做一些简单的数学运算。所以站在汇编的角度事情很简单很直接。这样的好处就是我们可以抛开很复杂的抽象理论去研究计算机本质是怎样工作的。
那么带来的问题是在我们编程时不可能全部用数字来表达所有的东西,需要用抽象概念来表达这些数字。从本质上来说,不管是字符串还是对象还是类型,都是由一些数字构成的一些数学模型。当我们学习这些抽象概念的时候,我们一定要有一种途径把它还原成原始的状态。
我们就来研究一些基本类型以外的复合类型。从字面上来说复合类型就是由多个基本类型构成的。由多个独立内存块构成的数据结构通常称之为复合类型。当然在不同的语言里对于复合类型的定义不太一样。比如说C语言里默认没有字符串的概念,它是以某个结束符标记的字节数组称之为字符串。
我们想象一下整个内存看做成超大号的字节数组,其中地址就是数组的序号,所以说不管类型多么复杂,归根到底它是在数组之上进行抽象的。所谓的虚拟地址空间就是看做成字节数组,在这字节数组之上通过一些关联逻辑把它构想成一个复杂的数据结构。
我们还是最终需要把数据结构最终还原成具体的内存布局。学习C语言时都知道研究一个对象的时候首先需要知道它的内存布局结构,理解内存布局结构关系到我们进行代码优化,选择什么样的算法。因为这样我们才知道当传递一个对象的时候究竟复制的是什么东西,如果是简单的整数就把整数复制过去ÿ