说实话,这个问题我原来真的没有思考过呢!通过学习,我发现它是跟操作系统的内存寻址相关的!
![](https://img-blog.csdnimg.cn/20201112101230742.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMzQ1Ng==,size_16,color_FFFFFF,t_70#pic_center)
![](https://img-blog.csdnimg.cn/2020111210264082.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkzMzQ1Ng==,size_16,color_FFFFFF,t_70#pic_center)
假如数组首地址是1000,由于int类型在内存中是占4个字节,则
array[0] = 1000 + 0 * 4
array[1] = 1000 + 1 * 4
array[2] = 1000 + 2 * 4
array[3] = 1000 + 3 * 4
下标从0开始:addr = 1000 + index * 4
array[1] = 1000 + (1 - 1) * 4
array[2] = 1000 + (2 - 1) * 4
array[3] = 1000 + (3 - 1)* 4
array[4] = 1000 + (4 - 1)* 4
下标从1开始:addr = 1000 +( index - 1) * 4
可以发现下标从1开始时,寻址公式多了一步减法运算!!!
当项目的数据规模较小时,可以不会有太大的变化。然而,当数据规模较大时,会严重影响到内存的检索效率。
总结:
为了极致的检索效率!