这一节学到的是,为什么很多编程语言中数组都从 0 开始编号。
用比较术语话来讲,数组是一种线性表数据结构,是用一组连续的内存空间,来存储一组具有相同类型的数据。
数组可以进行随机访问,也就是我们可以根据下标随机访问到对应的数组元素。这一定主要是取决于数组的寻址公式。
|
|
当我们访问下标为 i 的元素时,根据上述式子,就可以很快得到对应的地址了。事实上,数组下标如果理解成偏移量的话,则很明确了。比如下标为 0 的元素,则是 0 偏移量的一个地址。假如数组是从 1 下标开始的话,那么上述式子则会成为
|
|
每一次运算,都需要先进行一个减法运算。而数组作为一种基础类型使用,很没必要消耗在这上班。
上述是一维数组的。那么二维数组的呢?
如果是一个 m * n 的数组,那么 a[i][j] 的地址则为
|
|
对于数组的越界而言,其实就是访问该数组连续内存外的地址。