數組可以使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;
兩次消息框顯示界面如下: