为什么很多编程语言中,数组要从0开始编号?

从数组存储的内存模型上看,下标最确切的定义是偏移量。
 
从0开始编号,在计算a[i]的内存地址时,公式为
a[i]_address = base_address + i * data_type_size,
 
如果数组从1开始编号,公式为
a[i]_address = base_address + (i -1) * data_type_size。
 
对CPU而言,就多了一次减法指令。
最主要的原因应该是历史问题,C语言的设计者使用了0开始编号,后续的很多语言也就沿用了这个规矩。



posted on 2019-04-08 09:57  Helloearthlings  阅读(199)  评论(0)    收藏  举报

导航