美文网首页
数组的下标为何从零开始

数组的下标为何从零开始

作者: Xanchain | 来源:发表于2019-03-01 17:00 被阅读0次

原因一:历史原因

语言出现顺序从早到晚,比如:C、Java、JavaScript。

C语言数组下标是从0开始->Java也是->JavaScript也是。

降低额外的学习和理解成本。

那么C中为什么会从0开始呢?我们可以看一下第二个原因。

原因二:可以减少CPU指令运算,提高运算效率

(1)当下标从0开始:

数组寻址——arr[i] = base_address + i * type_size(1)

其中base_address为数组arr首地址,arr[0]就是偏移量为0的数组,即数组arr首地址;i为偏移量,type_size为数组类型字节数,比如int为32位,即4个字节。

(2)当下标从1开始:

数组寻址——arr[i] = base_address + (i -1)* type_size(2)

比较两个计算公式可以发现公式(2)每次CPU寻址需要多一次 i-1的操作,即多了一次减法的指令运算。

对于数组这种基础数据结构,无论在哪种高级程序语言中,都是频繁间接(作为容器的基础数据结构,比如Java的ArrayList)或者直接被使用的,因此要尽量减少其消耗CPU资源。

原因三:物理内存的地址是从0开始的

计算机主存是多个连续字节大小的单元组成的数组,每个字节都对应唯一的物理地址,第一个字节的地址为0。

另:并非所有的语言都是从0开始的,有一些语言也从1开始或者为负数。为了更方便理解,我们可以将数组下标理解为偏移量而非第几个数。

相关文章

  • 数组的下标为何从零开始

    原因一:历史原因 语言出现顺序从早到晚,比如:C、Java、JavaScript。 C语言数组下标是从0开始->J...

  • 数组

    数组的下标从零开始shell数组用括号()表示,元素由空格分隔array_name=(value1 ... val...

  • 数组

    一.为何编程语言的数组下标从0开始 1.从数组内存存储类型来看,数组的下标可以看作“偏移量”--offset;如果...

  • ndarray的创建和数据类型

    Numpy数组是一个多维数组,简称为ndarray;注意数组的下标是从零开始的,数组里的数据类型应该是一样的 nd...

  • 2017年9月13日

    今天学了数组,主要是一维数组,中括号里代表个数,但是实际下标从零开始,直到个数减一,还有斐波那契的的算法,的确,利...

  • iOS 数组使用:replaceObjectAtIndex:越界

    可能存在问题: 使用的数组下标超出数组最大下标值:比如数组长度count, index的下标范围[0, count...

  • 2.5.2 数组下标

    2.5.2 数组下标 1.数组下标 访问数组的某个元素,只要写出数组名和方括号内的用逗号分开的下标即可。 例如: ...

  • 25 - awk数组

    awk数组的定义及使用 定义数组格式:数组名[下标]=元素值 调用数组格式:数组名[下标] 遍历数组格式:for(...

  • 寻找数组的中心索引【LeetCode】

    给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。 数组 中心下标 是数组的一个下标,其左...

  • 下标

    扩展一个数组的的下标, 传入一个下标的数组,返回这些下标对应的元素的数组 extension Array{ sub...

网友评论

      本文标题:数组的下标为何从零开始

      本文链接:https://www.haomeiwen.com/subject/jblxuqtx.html