从数组的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。那么a[0]就是偏移为0 的位置,即首地址,a[k]就表示偏移k个type_size的位置,所以计算a[k]的内存地址:
a[k]_address = base_adress+k*typ_size
但是,如果从1开始计数,那么a[k]=base_adress+(k-1)*typ_size。不难发现,从1开始,对CPU而言,多了一次减法指令,那么效率的优化就尽可能做到极致。