说明:本笔记仅供自我学习。参考极客时间王争的《数据结构与算法之美》专栏。
为什么大多数编程语言中,数组要从0开始编号,而不是从1开始呢?
数组的储存空间是连续的内存空间。我这里举个例子。假如我现在有一个数组叫做array。array的首地址,我们在这里用a表示。array[0]=取a的地址。数组里面的下标可以理解为偏移。假如我们现在有这样的一个需求。我要取第m个元素的地址。我其实可以这样写:array[m-1]的地址 = 第一个内存空间往后偏移m个内存空间。如果是0开始那么就是第m个内存空间,我们只要取出里面的地址就好了。如果数组是从1开始,我们就需要的取第m-1个内存空间的地址。多了一个减1的操作。这个其实并不是压箱底的证明。只是因为c语言采取的这种模式,导致后面很多语言就一直保持了。用0确实也是可以省一步操作。
网友评论