为什么数组的下标是从0开始而不是从1开始?

一、数组下标从0开始的原因

在回答这个问题之前我们首先要明确一点那就是对于数组元素的访问在操作系统层其实就是对特定内存偏移量的数据的访问,换而言之即如果想要访问一个数组的某一个元素的值那么首先就要计算它的地址偏移量 ,其大概的公式为:

a[k]_adress = base_address + k*type_size ;

,倘若数组下标是从1开始那么地址计算公式即会转变为:

a[k]_adress = base_address + (k-1)*type_size ;

这对于CPU来说多了一次减法操作,对于那些对性能要求特别高的程序来说就是一个不小的性能影响因素。所以数组下标一般都是从0开始,另外的一个原因则是C语言数组下标便是从0开始的,后面的高级编程语言包括 java、C++、javascript等都在一定程度 上效仿了C语言。

你可能感兴趣的:(algrithm,算法)