简单一句话: 就是为了方便 计算出每个元素的具体内存地址


因为数组变量 实际上在内存上储存的是这个数组变量中第一个元素的的首地址,而系统在取数组中某个元素的值时,必须要得到具体的那个元素的地址才能获取到对应的值

具体每个元素的内存地址 = 数组变量首地址 + 下标 X 每个元素占用的字节数


比如:

 int a[5]={10,11,12,13,14}

因为 int每个元素占用4个字节,所以 数组中每个相邻的元素内存地址都相差4,

那么每个元素的地址就等于前一个元素的地址 + 4

a[0] 的内存地址    =    a的地址 + 0 * 4  (第一个元素的地址计算结果  跟数组的首地址一样)

a[1] 的内存地址    =    a的地址 + 1 * 4     (下标是1,内存地址就就是首地址 偏移 4字节)

a[2] 的内存地址    =    a的地址 + 2 * 4    (下标是2,内存地址就首地址 偏移 8字节)

..........

a[5]的内存地址    =    a的地址 + 5 * 4   (下标是5  内存地址就是首地址 偏移 20字节)



所以数组的索引(下标)从0开始 是为了方便计算每个元素的地址.如果从1开始的话 运算起来没有从0开始方便

所以 大部分编程语言数组索引都是从0开始


相关推荐

千千静听是用什么语言写?为什么支持这格式还这小巧?

以下内容摘自千千静听5.0.1 目录下的文件FAQ.txt问:千千静听是用什么语言写的,为什么支持这么多的格式还这么小巧?千千静听是用VC6编写的,如果你还知道WTL,那么作者可以告诉你,界面是用WT

数组打乱顺序:洗牌算法 发明者:Fisher–Yates shuffle

什么是洗牌算法?在php中,有函数 shufle($arr); 可以直接打乱数组.而有些语言是没有现成的函数的.那么可以自己写一个洗牌算法:第一步:取一个随机数, 最小值和最大值分别为 1和数组的成员

php数组相关大全

函数名函数简介array新建一个数组array_change_key_case返回字符串键名全为小写或大写的数组array_chunk将一个数组分割成多个array_column返回数组中指定的一列a

php计算数组重复次最多成员

直接ctrl+V 慢慢试去吧~<?php function mostRepeatedValues($array,$length=0){ //1. 计算数组的重复值 $arr

股票核买核卖/核按钮/核掉了/是什么意思?

核按钮:原本意思是指可用于下达核武器攻击的命令.股市中指的是以跌停价格挂单卖出股票核买:以涨停的价格挂单买入股票核卖:以跌停的价格挂单卖出股票核掉了:至于大家常说的 核掉了 就是以低挂的方式卖掉了的意

VARCHAR(250) 里面的数字有什么作用

一直很好奇 VARCHAR(10) 和 VARCHAR(255) 有什么区别如果没有区别 为什么要设计这个?后来突然想到了可能的原因 只是猜测 没查阅资料也没验证很可能是这个数字就是决定 记录长度是使

windows F1到F10分别是什么的快捷键 奇淫技巧快捷键

F1:帮助功能。在windows系统中,在程序中或者资源管理器中按下F1,一般都会出现帮助界面,还有一个小技巧,假如正在对某个程序进行操作,需要查看系统帮助,可以同时按win加F1。F2:重命名功能。

什么是极光算法,极光算法对SEO影响

百度拥有庞大的网站数据库,是搜索引擎算法的风向标,推出的算法都是经过深思熟虑的,早在2013年百度就推出了星火算法,进行原创文章保护,但原创文章的归属权一直是一个难题,为此百度在2018年5月发布了极

什么是新闻源,盘点新闻源对SEO影响

对于新闻源而言,虽然,它是一个比较陈旧性的话题,但一直被SEO人员热议,我们不可否认新闻源对于网站SEO而言,具有积极的作用。 因此,大量的SEO人员,尝试与各种新闻源站点,建立长期的合作关系,但有的

sqlite创建索引语句 添加索引 增加索引

mysql创建索引alter table 表名 add index 索引名 (列名);sqlite创建索引:CREATE INDEX 索引名 ON 表名 (字段a,字段b);