为什么多数编程语言的数组从“0”开始

以C语言举例,数组本质上就是一块连续的内存,由一个首地址和地址增量实现对数组元素的读写。
假设一个数组arr,我们知道arr就是数组第一个元素的地址。那么

第一个元素:arr[0] = *(arr + 0)
第二个元素:arr[1] = *(arr + 1)
…
第i+1个元素:arr[i] = *(arr + i)

因此我们可以得出结论:
索引并不是数组元素的编号,而是元素地址相对于首地址的增量
那么如果强行让索引满足人类的习惯,即从1开始,会发生什么呢?

第一个元素:arr[1] = *(arr + 1-1)
第二个元素:arr[2] = *(arr + 2-1)
…
第i个元素:arr[i] = *(arr + i -1)
第i+1个元素:arr[i+1] = *(arr + i+1-1)

可以看到,人类是舒服了,但在数组机制不变的情况下,计算机每次都要多做一次减法。
该怎么抉择是显而易见的了,毕竟人类的习惯可以改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值