数组

定义:数组类型定义了一组指定类型的元素序列

//声明方式一
type
  DayTemperatures = array [1..24] of Integer;

//声明方式二
var
  Names: array [1 .. 3] of string;

(1)不定长数组

定义:不定长数组,即动态数组,也就是声明的时候没有说长度是多少,在使用之前必须声明,长度是可以再分配的,序号必须从0开始,例子

var
    A : Array of Integer;    //定长数组 A :Array[0..10] of Integer
begin
    SetLength(A, 3);    //,设置数组长度,数组一共有3个元素
    A[0] := 1;
    A[1] := 2;
    A[2] := 3;

    //如果变长长度,直接增加后面的元素
    SetLength(A, 4);
    //现在增加了第四个元素,而前三个元素还是那三个
    A[3] := 4;
    //如果长度变短了,超出部分就会被去掉
    SetLength(A, 3);
    //现在A[3]没有了
end;

​ 有时候,大家这样要先设定长度,在赋值,很麻烦,现在介绍一个一气呵成的招数

type
    TA = Array of Integer;
var
    A : TA;
begin
    A := TA.Create(1, 2, 3);
    //此招请勿在Delphi 7上面使用

    //使用上面的方法之后,A[0] :=1, A[1] := 2, A[2]:=3
end;

(2)一维和多维

var
    A : Array[0..2, 0..2] of Integer;
    B : Array[0..2] of Array[0..2] of Integer;
begin
    A[0, 0] := 1;
    B[0, 0] := 1;
end;

​ 介绍二维数组中的不定长数组

var
    B : Array of Array of Integer
begin
    //设置一个3*3的矩阵
    SetLength(B, 3, 3);
     //如果需要实现齿状数组,必须像下面这么做
    SetLength(B, 3);
    SetLength(B[0], 1);
    SetLength(B[1], 2);
    SetLength(B[2], 3);
end;

​ 函数Low()和High()值得信赖,不过我们需要注意的是,他们返回的类型是我们数组的序号的那个类型,并不都是Integer,如前面例子中的THuangJacky

var
    A : Array of array of string;
    I, J : Integer;
begin
    SetLength(A, 10);
    for I := Low(A) to High(A) do
    begin
        SetLength(A[I], I);
        for J := Low(A[I]) to High(A[I]) do
            A[I, J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
        end
    end;
end.
posted @ 2023-02-15 15:43  德琪  阅读(34)  评论(0编辑  收藏  举报