C语言数组的下标总是从0开始吗,为什么C语言中的的数组是从0开始的

2021-01-07 18:14:15 字数 3767 阅读 3583

1楼:匿名用户

在其它一些语言中,情况可能有所不同,例如在basic语言中数组a[max]的元素是从a[1]到a[max],在pascal语言中则两种方式都可行。

注意:a[max]是一个有效的地址,但该地址中的值并不是数组a的一个元素。

上述这种差别有时会引起混乱,因为当你说“数组中的第一个元素”时,实际上是指“数组中下标为。的元素”,这里的“第一个”的意思和“最后一个”相反。

因为指针和数组几乎是相同的,因此你可以定义一个指针,使它可以象一个数组一样引用另一个数组中的所有元素,但引用时前者的下标是从1开始的:

/*don't do this!!*/

int a0[max],

int *a1=a0-1; /*&a0[-1)*/

现在,a0[0]和a1[1)是相同的,而a0[max-1]和a1[max]是相同的。然而,在实际编程中不应该这样做,其原因有以下两点:

第二,这种方式背离了c语言的常规风格。

为什么c语言中的的数组是从0开始的

2楼:匿名用户

因为那个是“偏移跨度”,不是“第几个”,第一个元素地址就是数组首地址,要是从1开始,那么第一个元素不就去了第二个元素地址了么

3楼:物理公司的

习惯,因为二进制是0101,所以一般从0开始计算

4楼:幻想秘境

请参考:http://******blogs.***/cenalulu/p/4286415.html

数组下标都是从1开始的,为什么说成是从0开始的呢?

5楼:仁昌居士

数组下标说成是从0开始的是因为如果从1开始编号,每次随机访问数组元素都多了一次减法运算,对于cpu来说,就是多了一次减法指令。数组作为非常基础的数据结构,通过下标访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能的做到极致。从0开始,可以减少一次减法操作。

6楼:匿名用户

下标是指数组元素的索引号,vb默认是0,对于你的数组dim a as variant

a=array(1,2,3,4)

a(0) 指第一个元素,它的索引号是0,它的值是1

7楼:匿名用户

option base 指定下标。一般是0或者是1.

c语言中,数组元素的下标是从什么开始的

8楼:匿名用户

从0开始

比如a[100] 就是0-99的下标

9楼:大狂哥灬

比如说a【4】是从下标0开始到3结束

a【n】就是从0开始到n-1结束

常用的编程语言,数组下标从0和1开始的分别有哪些

10楼:叫我女神经阿肉

oracle截取字符串substr下标是从1开始的数的,java是从0开始的

为什么c语言中数组要从0开始

11楼:浮夸

满意答案李诚(本心)5级2009-07-25首先,数组从零开始这个很多语言都是的,不过基本上可以看作从c语言开始就这样,后来的语言就是形成习惯了啊 追问: c语言为为什么是从0开始,我记得0一开始的时候好像不是视为自然数的,小学的时候。 回答:

个人认为和数组的使用方法有关,在c语言的使用中,推荐的使用方式并不是a[0]这种方式,而是直接使用数组指针,那么第一个数组单元就是a,第二个就是a+1,正好和所谓的下标也吻合了,以后就知道a+x就是a[x],如果是从一开始的话那么这两个就又错开一位。这个答案是看了c programming language后总结的,不知道对不对,建议你也看看这本书。风之子 的感言:

这个答案挺新鲜,我有这本书,不过没有怎么看。可能是你说的原因吧,谢谢。

为什么c语言的数组下标从0开始而不是从1开始

12楼:匿名用户

一种约定。

如果最初约定从1开始 那也没什么

至于为什么会选择从0开始,最重要的原因 我觉得是方便对于任意的a[i] 取值的时候 都是等效于*(a+i)a是数组首地址,这样访问第一个元素 *(a+0) 就不需要任何偏移了。

c语言的下标为什么从0开始

13楼:甜心奶酪

其实从0开始是有一定道理的。

数组是一段连续的空间,要求a[i]就是求它的地址,然后找到它。如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。

是不是前一种更好计算呢。

如果是二维数组就更是这样了。

14楼:匿名用户

c语言的下标与其地址是相对应的,而第一个下标刚好是数组所在的地址,所以不用加偏移(既加0),所以c语言的下标就定为从0开始(c语言的发明者认为这样比较符合逻辑).

这个特性是为了方便编译器设计者而设定的。(为什么不呢,开头几年c语言的主要客户就是编译器设计者啊)。

偏移量在编译器设计者心目中根深蒂固,a[3]就是首地址为a+3的值。所以c语言被设计成这个样子。

后来的c++,java也都遵循这个约定。但并不是所有语言都是这样。比如:vb可以指定下标,而关联数组则是用字符串做为下标的。

15楼:匿名用户

这个特性是为了方便编译器设计者而设定的。(为什么不呢,开头几年c语言的主要客户就是编译器设计者啊)。

偏移量在编译器设计者心目中根深蒂固,a[3]就是首地址为a+3的值。所以c语言被设计成这个样子。

后来的c++,java也都遵循这个约定。但并不是所有语言都是这样。比如:vb可以指定下标,而关联数组则是用字符串做为下标的。

16楼:匿名用户

没有规定一定要从“0”开始啊,如果你愿意,可以从任何数字开始,也能达到一样的效果。

不过按照人们的习惯,做加法计算的时候,初值都选用“0”(这样,加几减几都不会出现偏差);做乘法运算的时候,初值都选用“1”(如果选用“0”的话,乘到最后的结果就只能是“0”不会得到预期的结果了)。

17楼:手机用户

和计算机内部的数据结构相关

用二进制第一个是0

18楼:匿名用户

学了多维数组后还不明白这个问题吗?c语言的这个特征是很方便的,

19楼:匿名用户

基本上编程语言的下标都是从0开始的,这可能跟现实中有点儿不一样..不过慢慢习惯了就好了...^_^

20楼:

vb里要说option base 1 下标才从1开始啊

我感觉楼上的说的对

21楼:匿名用户

为什么vb的下标从1开始?

当我们习惯了c、c++、c#、java等等语言下标从0开始,我们就会很奇怪为什么vb的下标要从1开始,从1开始造成了多少边界问题呀。。。

22楼:匿名用户

硬性规定啊!

将来你要能搞出一套开发环境来,下标想从几开始就从几开始,你自己规定,别人服从!

23楼:匿名用户

从几开始不都一样,只是个标记而已,也可以从'a'开始,从100开始,习惯了就好了。

24楼:

mlt2004说得好

c语言中,数组元素的下标是从什么开始的

1楼 匿名用户 从0开始 比如a 100 就是0 99的下标 2楼 大狂哥灬 比如说a 4 是从下标0开始到3结束 a n 就是从0开始到n 1结束 c语言数组的下标总是从0开始吗 3楼 水水好萌 是的,对数组a max max是一个编译时可知的值 来说,它的第一个和最后一个元素分别是a o 和al...

为什么数组下标从0开始而不是从1开始

1楼 匿名用户 数组是一段连续的空间,要求a i 就是求它 的地址,然后找到它。如果从0开始,则a i 的地址 首地址 i 每个数据所占的长度 如果从1开始 则a i 的地址 首地址 i 1 每个数据所占的长度。 是不是前一种更好计算呢。 数组下标都是从1开始的,为什么说成是从0开始的呢? 2楼 仁...

C语言中数组下标有下限吗,c语言中,数组元素的下标下限为

1楼 天云一号 c语言中数组的下标是根据用户定义的数组大小来确定的,最小下标为0 举例说明如下 int a 5 定义一个int型数组,并对其进行初始化。则共有a 0 a 1 a 2 a 3 a 4 这5个元素,所以其下标的范围为0 5 更一般的就是 数组a n 的下标范围为0 n 1 2楼 百度用户...