为什么数组要从零开始?
2016 年 3 月 15 日
由此我们可以得出,数组中每个元素地址的计算公式:
// n为数组坐标,x为数组开始的内存地址,
//size为每个元素的大小 array[n]的地址 = x + n * size
这是目前数组寻址的计算公式;但是这是小标起始为0的时候,假如我们想让数组的起始下标变为1,则公式会变成什么样呢?
// n为数组坐标,x为数组开始的内存地址,size为每个元素的大小 array[n]的地址 = x + (n - 1) * size
对比以上两个公式,会发现,如果用下面的公式,仅仅是多了一个”n – 1″的运算!
要知道,数组是计算机语言的最最基本的组成单元,所有的计算机编程语言的其他组成部分,包括各种类库,各种特殊的数据结构(如Golang的channel)和语法字段等,都是基于数组等这些最最基本的组成单元之上做的封装;
假如我们把数组从1开始,对数组而言只是多了一步计算,但是,对于整个编程语言的系统而言,将会是多了无数次计算!所以:在编程语言的设计中,对于数组等这些最最基本的编程操作,要把效率做到极致!因此,数组的起始下标会是0开始。