Delphi的数组下标是从1开始的,而java和C++中的数组下标都是从0开始的,那么从0开始到底有什么好处呢?哪位前辈可以给点提示?

解决方案 »

  1.   

    在C中是有意义的.就是地址位置.
    开始的java程序员是从C程序员过渡来的,就延用了C中的下标0开始.
    后来知道没意义了.加了个(for:each)只不过原来的总不能扔吧,那么多人都用习惯了..
    这就是所谓的向前兼容..所以越走包袱会越重
      

  2.   

    看不出有什么好处。好像pascal也是由1开始了。难道是古老语言 向新语言的转变。
      

  3.   

    在JAVA中允许数组长度为0.在编写一个结果为数组的方法时,
    如果碰巧结果为空,那么这种语法形式就显得非常有用。
    此时可以创建一个长度为0的数组:new elementType[0].
      

  4.   

    从0开始就是为了计算内存地址快捷。c++中:
    int[] a=new int[10];
    a[0]的地址就是a+0;
    a[1]的地址就是a+1;
    a[2]的地址就是a+2;计算机的cpu处理数据时,都要从内存打交道,数据要从内存中取,结果要放到内存中,而存取数据要知道内存地址才行,所以寻址快,则存取速度也就快,程序的效率也就高。
      

  5.   

    二进制01,四进制0123,八进制01234567,十进制0123456789,十六进制0123456789ABCDEF,所有的这些数学上的计数方法,都是从0开始。 
      

  6.   

    delphi,用的时候感觉一点都不爽,delphi以人的思维重整了一把,从一开始。从0开始有好处。for (i,i<边界,条件触发)从1开始还要多写个<=号,多了一层含义,遍历不刺激呀!0 +op肯定是 有序 op位,有序地址寻址方便。
      

  7.   

    从1开始为什么不好呢?计算机在内存找a[i]时,地址要这样算:a+i-1,多了一次减法.想不多也可以,那a指向的空间的第一个单元不用,从第二个单元开始算数组的第一个元素, 这样浪费一个单元的空间。所以c++要从0开始。java也一样道理。
      

  8.   

    纠正下楼主:delphi里,固定数组下标可以定义为从任何数开始,默认是0,动态数组下标是从0开始。
      

  9.   

    ZangXT大侠可以指点指点这个问题么?
      

  10.   

    在 C 语言当中,数组变量 a 指向的地址就是第 1 个元素的地址,所以第 1 个元素的地址就是:a + 0 * 元素大小如果把 0 改为 1,那么计算每个元素地址的时候就必须先对下标减一。这就带来不必要的麻烦。总之,数组下标不是指序号,而是是数组元素相对于数组开头的偏移量。