版权声明
- 本文原创作者:谷哥的小弟
- 作者博客地址:http://blog.csdn.net/lfdfhl
解释答疑
初学者可能都有一个疑问:为什么数组下标从0开始?
从数组存储的内存模型上来看,下标的原本含义是偏移(offset)。
假若数组下标从0开始,则数组a[i]的内存寻址公式为:
a[i]Address = baseAddress + i * typeSize
假若数组下标从1开始,则数组a[i]的内存寻址公式为:
a[i]Address = baseAddress + (i-1) * typeSize
所以,从两个寻址公式可以看出:如果数组下标从1开始,则每次随机访问数组元素就会多一次减法运算;这对于CPU来说就多了一次减法指令。
故,为了减少一次减法操作,数组下标从0开始编号。由于C语言的设计者采用0作为数组下标的起始,所以之后的其它高级语言也都效仿了该规则。