从数组存储的内存模型上看,下标最确切的定义是偏移量。
从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开始编号,后续的很多语言也就沿用了这个规矩。
为什么很多编程语言中,数组要从0开始编号?
原文:https://www.cnblogs.com/helloearthlings/p/10668773.html