1楼:匿名用户
数组是一段连续的空间,要求a[i]就是求它
的地址,然后找到它。如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度。
是不是前一种更好计算呢。
数组下标都是从1开始的,为什么说成是从0开始的呢?
2楼:仁昌居士
数组下标说成是从0开始的是因为如果从1开始编号,每次随机访问数组元素都多了一次减法运算,对于cpu来说,就是多了一次减法指令。数组作为非常基础的数据结构,通过下标访问数组元素又是其非常基础的编程操作,效率的优化就要尽可能的做到极致。从0开始,可以减少一次减法操作。
3楼:匿名用户
下标是指数组元素的索引号,vb默认是0,对于你的数组dim a as variant
a=array(1,2,3,4)
a(0) 指第一个元素,它的索引号是0,它的值是1
4楼:匿名用户
option base 指定下标。一般是0或者是1.
数组下标为什么从0开始而不是从1开始?
5楼:爱上榛子的核桃
你可以把数组变量看成指针,数组下标看成地址的偏移量。
因为数组第一个元素的地址偏移量一定是0,所以数组下标就是从0开始了
6楼:匿名用户
老大,这个问题也要问。非要懂得数据结构的人才能回答吗?
想想就很明白了。
以下假设数组下标是从1开始的:
如果你定义
int a[100];
那么你在使用的时候用到第100个元素a[100]的时候,请问编译器如何能分辨你这里的a[100]和你定义的a[100]有什么区别呢?
假设到此为止。
现在如果你下标是从0开始的,那么a[0] - a[99]是元素,怎么都不可能和定义的a[100]出现名字冲突,编译器就很容易识别了。
就这么简单的问题~~~
7楼:匿名用户
也可以从1开始啊,可能与0是最小自然数有关吧…
8楼:匿名用户
钻语法的牛角尖没啥意思、
语法是规定好的
就像球只能进别人的门,进自已的裁判就要吹了
9楼:小云
为什么“1+1”答案是2,不是3?规定的呗,同样的道理,数组下标也规定从0开始。
为什么c语言的数组下标从0开始而不是从1开始
10楼:匿名用户
一种约定。
如果最初约定从1开始 那也没什么
至于为什么会选择从0开始,最重要的原因 我觉得是方便对于任意的a[i] 取值的时候 都是等效于*(a+i)a是数组首地址,这样访问第一个元素 *(a+0) 就不需要任何偏移了。
c/c++中数组下标从0开始而非从1开始,为什么?
11楼:匿名用户
随着你遇到的问题种类越来越多,你就会发现下标从0开始能给程序在细节上带来的优化效果了。
比如,最基本的,确定数组a中第i个元素的地址,如果从0开始,则a[i]的地址= 首地址 + i*每个数据所占的长度;如果从1开始,则a[i]的地址= 首地址 + (i-1)*每个数据所占的长度,多了一个整数计算
12楼:紫金玄铁
方便访问数组成员。
从0开始的话,只需用数组名(也就是数组地址),加上下标,只需要很简单的计算,就可以内存中准确访问到元素。
像在pascal这样的语言中,数组下标是可由人去定的。如:
vararr: array[2..4] of integer; //数组下标从2开始,到4结束。
虽然pascal这样的数定,在逻辑上很方便人们去理解。但从编绎器角度来讲,就很麻烦了。这时,你要访问一个数组元素,就不得不知道数组的下界,还要经过转换才能得到元素的相对指针。
如果是在多维数组的应用中,就更显而易见了。
c语言在工程应用中应用广泛,就是因为他对硬件的支持效率高,
在早期硬件不是很高级的时候,将数组下标选为0,大大提高访问数组速度,而且还省去了不必要的寄存器占用。
在c程序的数组中为什么下标要从0开始呢?从1开始不行吗?
13楼:匿名用户
可以,但是浪费了内存
,比如开辟100个存储,int array[100]:是从0~99,而你是从一开始,必须是int array[101]了,之所以下标从0是因为pc的内存他的硬件实实在在就是从0地址开始索引的……
14楼:
数组的地址与第一个元素的地址相同,下标为多少也就是指偏移量为多少的地址,所有0开始比较方便。
还有一些历史原因吧,有些时候设计者就是按照他的思想设计的,就是他认为的,也没那么多原因。
15楼:匿名用户
c语言是老外发明的,老外都是从0开始,跟中国人习惯不同
16楼:匿名用户
程序最终都会编译成机器码,如果你了解汇编的话应该知道,数组占用着一串连在一起的内存,数组名可以理解为那一块内存的首地址,下标则是偏移,寻址过程就是首地址+偏移*步长,第一个元素偏移为零,刚好等于下标,如果下标从1开始处理起来麻烦一点。
17楼:匿名用户
在c程序的数组中为什么下标要从0开始呢?从1开始不行吗?
可以。但是从0开始更节约内存。
为什么数组下标从0开始?
18楼:百度用户
这其实是一个错误。下标从1开始可以免去很多bug
至于内存地址的偏移应该是编译/解释系统的工作,不应该暴露给客户端**
有n个整数,把它们存放到一维数组中(下标从0开始),输出
1楼 include int main n i maxm maxn 题目中n最大20 这里比题目中稍微大一点 while scanf d n eof n 0 printf d d a maxn maxn return 0 用c语言编程 从键盘上输入10个整数存放到一维数组中 输出其中最大的数及其对应...
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...
为什么中国是一夫一妻制,中国真正实行一夫一妻制是从什么时候开始的?
1楼 北京王嘉化妆学校 自然演变 人类从巢居到黄帝造宫室以后的屋居,逐步形成了家,在古代,由亲亲和尊尊及和此类似的关系组成的大的家族就是国的雏形,而近代社会的家却是国的一个基本生活单位,家庭的功能和作用和古代的有了很大的区别,而这一切都是很神奇地自然形成的,有了家以后才有了夫妇,有了夫妇以后才有了婚...