为什么数组下标从0开始

在讨论数组下标为什么从0开始之前我们先回顾一下数组有什么特点。 数组优点: 1.内存中占据连续的内存空间 2.数据随机访问,也就是说获取数据非常高效 那为什么说数组的数据可以随机访问而且取数据非常高效呢? 下面我们来看这样一张图: ![微信图片_20201013171439.png](https://cos.easydoc.net/62215318/files/kg7r2bj6.png) 上图是一个长度为10的整型数组,我们假设数组的首地址是1000。不难看出当下标从0开始的时候,数组中各个元素的首地址计算公式是: a[i]地址 = 1000 + i*4。(其中1000是数组a的首地址,4是每个元素占的内存大小(int占4个字节大小)。) 可以看的出数组中根据下标随机访问的时间复杂度为O(1)非常高效。 如果下标从1开始会怎么样呢?计算公式如下: a[i]地址 = 1000 + (i-1)*4。 可以看的出下标从1开始比下标从0开始多了一个减法运算(即:i-1)。虽然我们口算一下感觉很简单,但是在cpu中需要转化成2进制,通过好几条指令来运算才能得到结果。 试想一下,数组作为非常底层的一个数据结构,它的运算是要保证非常高效的,怎么可能多花费一次运算呢?所以数组的下标是从0开始,而不是从1开始。 当然这只是我个人的一种观点,如果大家有更好的观点,可以留言讨论一下。 好了,今天就说到这吧,希望对大家有所帮助。