程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 我所理解的Delphi中的數組類型

我所理解的Delphi中的數組類型

編輯:Delphi

數組可以使Object Pascal所擁有的任何數據類型,數組是一些數值的簡單集合。
 var
  MyArray: array[0..4] of Integer;        { 聲明一個數組包括5個整數數值}
begin
  MyArray[0] := -200;                     { 通過操作符[]就可以訪問每個數組元素}
  MyArray[1] := -100;
  MyArray[2] := 0;
  MyArray[3] := 100;
  MyArray[4] := 200;
  MyArray[0] := MyArray[1] + MyArray[4];  { MyArray[0]為-100}
end;
其MyArray在內存空間的分布,每個整數需要4個字節,因此整個數組將占20個字節的內存,如下:

1、多維數組
 const
  CArray: array[0..4] of Integer = (-20, -100, 0, 100, 200);
  { 數組常量的在聲明的同時也要進行賦初值}
var
  MyArray: array[0..2, 0..4] of Integer; { 兩維數組的聲明}
  UArray: array[10..20] of Integer;      { 聲明了一個下界10到上界20的10個元素的數組}
  X: Integer;
begin                                    { 兩種方法可以訪問兩維數組}
  X := MyArray[1][1] + MyArray[2][1];    { 1、[X][Y]訪問}
  X := MyArray[1, 1] + MyArray[2, 1];    { 2、[X, Y]訪問}
 
  { 下面的訪問超出了數組范圍,
  將會提示“Constant expression violates subrange bounds”錯誤}
  X := MyArray[3, 1] + MyArray[0, 5];    {注意這兩個元素超出數組聲明的范圍}
end;
其中MyArray被聲明為一個二維數組,其在內存中的分布如下:
2、上界與下界
處理數組會經常用到上界(Low)和下界(High)函數。如:
 var
  X, I, Lower, Upper: Integer;
  MyArray: array[10..20] of Integer;
begin
  { 這裡假使已經將MyArray數組進行了賦初值}
  Lower := Low(MyArray); { Lower的值為 10}
  Upper := High(MyArray);{ Upper的值為 20}
  X := 0;
  for I := Lower to Upper do
  begin
    X := X + MyArray[I]; { X將累加數組元素值的和}
  end;
end;
使用上下界函數可以保證存取數組時不越界。
對了,如果換成二維數組,上下界函數如何用呢???
 var
  Lower1, Upper1: Integer;{ 用來存儲一維的上下界}
  Lower2, Upper2: Integer;{ 用來存儲二維的上下界}
  MyArray: array[10..20, 1..2] of Integer;
begin
  { 這裡假使已經將MyArray數組進行了賦初值}
  Lower1 := Low(MyArray); { Lower的值為 10}
  Upper1 := High(MyArray);{ Upper的值為 20}
  ShowMessage('第一維的下界為 ' + IntToStr(Lower1) +
              ',上界為 ' + IntToStr(Upper1));
  Lower2 := Low(MyArray[Lower1]); {獲取MyArray[10]下界}
  Upper2 := High(MyArray[Lower1]);{獲取MyArray[10]上界}
  ShowMessage('第二維的下界為 ' + IntToStr(Lower2) +
              ',上界為 ' + IntToStr(Upper2));
end;
兩次消息框顯示界面如下:

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved