您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Delphi >> 正文

Google
Delphi之数组
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 15:58:02

Delphi之数组
     Object Pascal中可以建立丰富的数据类型。数组毫无疑问也是众多自定义数据类型中的一种。
     Type
       TA = array[0..9] of Integer;
     ...
     var
       A : TA;
     和下面这段代码通常效果是相同的(不同的地方在类型篇再说)
     var
       A : Array [0..9] of Integer;
     这相当于C中的
     int A[10];
     或Basic中的
     Dim A(9) as Long或 Dim A(0 to 9) as Long
下面将分几个方面讲OP的数组:
多维数组:
     多维数组的本质其实就是数组之数组。   
     type
      TA = array[0..9] of array [0..9] of Integer;
      TB = array[0..9, 0..9] of Integer;
      TCA = array[0..9] of Integer;
      TC = array[0..9] of TCA;
     在这里TA,TB,TC是等价的。在使用时是没有分别的。例如X[0][0]:=1;Tx[0,0]:=1;(X是TA、TB、TC类型)
     都是合法的。因为这几种类型都是在内存中开辟一块100x100xSizeOf(Integer)的区域,你根本无法区
     分他是如何申请的,也没有必要去区分。
     多维数组如何取得维数呢?
     前面已经说过多维数组就是数组之数组,所以可以利用下面的方法来取得多维数组的维数:
      var
        k:array[2..10,3..20]of integer;
      begin
       showmessage(Inttostr(Low(k))+'   '+Inttostr(High(k)));
       showmessage(Inttostr(Low(k[Low(K)]))+'   '+Inttostr(High(k[Low(K)])));//k[n]是array[3..20] of integer;的数组

      end;
动态数组:
     OP中动态数组的声明是
       type
         TA=Array of Integer;
     动态数组应用中十分广泛。现在有一种趋势就是在数据结构中用动态数组代替链表
     (到底哪个好哪个坏自有评价我们在这里不予以讨论)。
     可能你会说动态数组根本不必要使用,我就从来没有用过。 我不信你没有用过动态数组!
     String类型你用过吧,它近似可以说是动态数组的一种。
     动态数组的内存是在使用分配长度时才予以分配的,他的下界只能0(AnsiString字符串例外,下界是1,原因后面再说),
     动态数组的生存期是自管理的使用后一般不用释放,如果要强行释放就用把Nil附给他。
     使用动态数组往往爱犯的错误:
     1)和静态数组概念混淆:
     动态数组的地址并不是他第一个元素的地址,而在静态数组中我们大家常常使用这样的语句:
     var
       A, B : array[0..19] of Integer;
     ... 
     CopyMemory(@A, @B, 20*SizeOf(Integer));
   或者CopyMemory(@A[0], @B[0], 20*SizeOf(Integer));
   都是正确的,因为静态数组中数组的首地址就是他第一个元素的地址。

     但是在动态数组中只有第二种写法会得到正确结果。即只能写成:
     var
       A, B : array of Integer;
     ... 
     SetLength(A, 20);
     SetLength(B, 20);
     CopyMemory(@A[0], @B[0], 20*SizeOf(Integer));    
     2)数组的附值:
     静态数组中的附值很简单
     var
       A, B : array[0..19] of Integer;
     ...
 &nbs

[1] [2] [3] [4] [5] [6] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号