数组类型是具有相同类型的元素按一定的顺序组成的序列数组中数据元素被顺序安排在内存中一段连续的区域,可以通过数组名来访问在Object Pascal中数组分为静态数组和动态数组,我来为大家讲解一下关于判断数组的数据类型?跟着小编一起来看一看吧!

判断数组的数据类型(5.高级数据类型)

判断数组的数据类型

5.静态数组

数组类型是具有相同类型的元素按一定的顺序组成的序列。数组中数据元素被顺序安排在内存中一段连续的区域,可以通过数组名来访问。在Object Pascal中数组分为静态数组和动态数组。

静态数组在程序初始化时必须分配内存单元,明确数组的大小和元素的数据类型。而动态数组在定义和声明时只指定数组的类型,而不指定数组的大小,在程序运行时动态地开辟内存空间。

本节我们介绍静态数组的使用。

5.1一维数组的定义

数组通常分为一维、二维和多维数组。一维数组的定义格式:

type <数组类型名> = array[<下标类型>] of <基类型>;

如:

type One2TenArray = array[1..10] of Integer;

上面的语句定义了One2TenArray数组类型,其元素下标从1到10,每个元素的类型为整型。

在Object Pascal中:

  • 下标类型允许为整数类型、字符类型、布尔类型、子界类型、枚举类型。元素的类型可以为任意数据类型。

  • 在同一个数组中,所有元素类型必须相同

  • 如果使用自定义数据类型作为下标类型,在使用前必须声明

    举例如下:

    type Color = (red, green, blue, yellow, black, white); Ten = 0..10; ColorArray = array[Color] of integer; TenArray = array[Ten] of Color;

    5.2一维数组变量的声明

    数组变量的声明与其他变量的声明相同,如:

    var a1, a2: ColorArray; c1, c2: TenArray;

    也可以直接声明,如:

    var a1, a2: array[0..10] of Real; sa: array[Boolean] of String;

    5.3数组元素的访问

    使用数组名加方括号,方括号中是数组元素的下标值来访问。如:

    a1[3] sa[True]

    在Object Pascal中:

  • 下标值必须符合数组类型在下标类型的定义,其类型必须与下标类型一致,其值在下标取值范围内

  • 下标也可以是表达式

    5.4标准数组函数

    在Object Pascal中,标准函数Low和High,可以返回数组的最小下标值和最大下标值;Length函数可以返回数组的长度。

    一维数组的应用示例:产生10个随机数,计算10个随机数的最大值、最小值、和、平均数。界面如下图:

    代码如下:

    procedure TForm1.Button1Click(Sender: TObject); var a: array[1..10] of integer; i, sum, max, min: integer; mean: Real; begin // 计算按钮单击事件 for i := 1 to 10 do begin randomize; a[i] := random(i * 100); Memo1.Lines.Add(IntToStr(a[i])) end; sum := 0; max := a[1]; min := a[1]; for i := 1 to 10 do begin sum := sum a[i]; if a[i] > max then max := a[i]; if a[i] < min then min := a[i]; end; mean := sum / Length(a); Edit1.Text := IntToStr(sum); Edit2.Text := FloatToStr(mean); Edit3.Text := IntToStr(max); Edit4.Text := IntToStr(min); end; procedure TForm1.Button2Click(Sender: TObject); begin // 清除按钮单击事件 Memo1.Lines.Clear; Edit1.Text := ''; Edit2.Text := ''; Edit3.Text := ''; Edit4.Text := ''; end;

    5.5二维静态数组

    二维静态数组是指一个数组中的元素又是一个一维数组,定义格式:

    type <数组类型名> = array[<下标类型1>] of array[<下标类型2>] of <基类型>;

    也可以采用如下格式:

    type <数组类型名> = array[<下标类型1, 下标类型2>] of <基类型>;

    如:

    type TIArr = array[1..10] of array[1..10] of integer; TDoubleArr = array[1..10, 1..10] of Real; var i1: TIarr; d1: TDoubleArr; m1: array [1..5,1..10] of real;

    示例:输出九九乘法表,界面如下图:

    代码如下:

    procedure TForm1.Button1Click(Sender: TObject); const SPACE8 = ' '; SPACE10 = ' '; var a: array [1..9] of array [1..9] of integer; i, j: integer; s: string; begin for i := 1 to 9 do for j := 1 to 9 do a[i,j] := 0; for i := 1 to 9 do for j := 1 to i do a[i,j] := i * j; s := SPACE10; for i := 1 to 9 do s := s inttostr(i) SPACE10; Memo1.Lines.Add(s); s := ''; for i := 1 to 9 do begin s := s inttostr(i) SPACE8; for j := 1 to i do begin if a[i,j] = 0 then continue; if a[i,j] < 10 then s := s ' ' inttostr(a[i,j]) SPACE8 else s := s inttostr(a[i,j]) SPACE8; end; Memo1.Lines.Add(s); s := ''; end; end;

    5.6多维静态数组

    多维静态数组的一般定义格式:

    type <数组类型名> = array[<下标类型1, 下标类型2, ..., 下标类型n>] of <基类型>;

    如:

    type TW3 = array of [1..10, 1..10, 1..10] of integer; var a: TW3