# 数组是一种线性表数据结构
线性表(Linear List),就是数据排成一条像线一样的结构,每个线性表上的数据最多只有前和后两个方向。链表,队列,栈等也是线性表结构。
非线性表,如二叉树,堆,图等,数据之间不是简单的前后关系。
# 数组随机访问
a[i]_address = base_address + i * data_type_size
通过公式计算出数组下标对应的内存地址,从而实现随机访问
# 为什么从 0 开始编号
从数组存储的模型看,“下标”最确切的定义是“偏移(offset)”。
如果从 1 开始编号
a[k]_address = base_address + (k-1) * data_type_size
- 每次随机访问都多了一次减法运算,对于 CPU 来说,就是多了一次减法指令
- C 语言设计者用 0 开始计数数组下标,之后的语言都效仿了 C 语言,为了在一定程度上减少学习成本