C++/JAVA 的数组下标为什么从0开始

1 篇文章 0 订阅

在我们日常的学习过程中,我们了解到在C++/JAVA中,数组下标是从0开始的。对于新手来说,遍历的数组的时候还真是容易出错。但是为什么要这样规定,这样规定有什么好处?

其实根据我们前辈的思想,这样规定的主要好处是方便“寻址”。这就要涉及到底层硬件的知识,我们知道程序运行时,变量的值,运算的结果值等都是暂时放在内存中。举个例子:int a = new int [5]  这是JAVA中常用的创建数组的程序语句。

当这句话执行完毕后,机器都做了什么?

首先在内存就开辟了一块地址空间(内存中地址空间都是连续的,地址中的内容就是你存储在其中的值),然后变量a就指向了这片地址空间的“首”地址,如果想要访问这片地址的其他地址,那么就得用偏移量来计算,如下图:

                                                         

变量a已经指向首地址,a[0] = a + 0 ,0代表的就是偏移量,a偏移0个单位,就是其本身,所以a[0]代表的就是第一个地址。  a[1] = a + 1;  a偏移一个单位,那么就可以访问到a[1],也就是第二个地址。所以只需要   变量名+[偏移量] ,(如 a[0]) 就可以访问到相应的内存地址。这是下标从0开始的情况。

还有一些语言,如pascal , delphin 等下标都是从1开始的,这样的话访问地址就得用   变量名+[偏移量-1]来访问。或者首地址不存储值,只被变量名所指向,但这样就浪费了一个地址空间。

所以C++/JAVA中 规定数组下标从0开始就是这样的原因,方便寻址,访问便捷。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值