目录
一 数组寻址公式
a[i]_address = base_address + i * data_type_size
data_type_size 是数组中每一个元素大小。
二 数组模型表示
以 int[] a = new int[10] 为例。计算机给数组 a[10],分配了一块连续内存空间 2000~2039,内存块的首地址为 base_address = 2000。
三 数组寻址计算
假设数组从0开始,计算第9个元素公式是:a[9]_address = 2000 + 9 * 4 = 2036;
假设数组从1开始,计算第9个元素公式是:a[9]_address = 2000 + (10-1) * 4 = 2036
对比:数组从1开始相当于每次随机访问数组元素都多了一次减法运算,对于 CPU 来说,就是多了一次减法指令。数组作为非常基础的数据结构,通过下标随机访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能做到极致。
结论:为了减少一次减法操作,数组选择了从 0 开始编号,而不是从 1 开始。