数组允许我们以相同的名称引用一系列变量,并使用数字(索引)调用该系列中的单个元素。数组既有上界也有下界,数组的元素在这些边界内是连续的。
数组的元素都是相同类型的值(字符串、整数、记录、自定义对象)。
在Delphi中,有两种类型的数组:一种是固定大小的数组,它总是保持相同的大小——一种是静态数组——另一种是动态数组,它的大小在运行时可以改变。
假设我们正在编写一个程序,允许用户在每天开始时输入一些值(例如约会次数)。我们会选择将信息存储在列表中。我们可以将此列表称为约会,每个号码可能存储为约会[1]、约会[2],依此类推。
要使用该列表,我们必须首先声明它。例如:
var Appointments : array[0..6] of Integer;声明一个名为Appoints的变量,该变量包含7个整数值的一维数组(向量)。给定此声明,约会[3]表示约会中的第四个整数值。括号中的数字称为索引。
如果我们创建了一个静态数组,但没有为它的所有元素赋值,那么未使用的元素包含随机数据;它们就像未初始化的变量。以下代码可用于将约会数组中的所有元素设置为0。
for k := 0 to 6 do Appointments[k] := 0;有时我们需要跟踪数组中的相关信息。例如,要跟踪计算机屏幕上的每个像素,需要使用多维数组引用其X和Y坐标来存储值。
使用Delphi,我们可以声明多维数组。例如,以下语句声明了一个二维7×24数组:
var DayHour : array[1..7, 1..24] of Real;要计算多维数组中的元素数,请将每个索引中的元素数相乘。上面声明的DayHour变量在7行24列中留出168(7*24)个元素。要从第三行和第七列的单元格中检索值,我们将使用:DayHour[3,7]或DayHour[3][7]。以下代码可用于将DayHour数组中的所有元素设置为0。
for i := 1 to 7 do for j := 1 to 24 do DayHour[i,j] := 0;您可能不知道数组的确切大小。您可能希望能够在运行时更改数组的大小。动态数组声明其类型,但不声明其大小。动态数组的实际大小可以通过使用SetLength过程在运行时更改。
var Students : array of string;创建字符串的一维动态数组。该声明不为学生分配内存。为了在内存中创建数组,我们调用SetLength过程。例如,鉴于上述声明,
SetLength(Students, 14) ;分配一个包含14个字符串的数组,索引为0到13。动态数组总是整数索引的,总是从0到小于其元素大小的1开始。
要创建二维动态数组,请使用以下代码:
var Matrix: array of array of Double;begin SetLength(Matrix, 10, 20) end;它为双浮点值的二维10×20数组分配空间。
要删除动态数组的内存空间,请将nil指定给数组变量,如:
Matrix := nil;通常,程序在编译时不知道需要多少元素;这个数字直到运行时才会知道。使用动态阵列,您只能在给定时间分配所需的存储量。换句话说,动态数组的大小可以在运行时更改,这是动态数组的关键优势之一。
下一个示例创建一个整数值数组,然后调用Copy函数调整数组大小。
var Vector: array of Integer; k : integer; begin SetLength(Vector, 10) ; for k := Low(Vector) to High(Vector) do Vector[k] := i*10; ... //now we need more space SetLength(Vector, 20) ; //here, Vector array can hold up to 20 elements //(it already has 10 of them)end;SetLength函数创建一个更大(或更小)的数组,并将现有值复制到新数组。Low和High函数确保您可以访问每个数组元素,而无需在代码中查找正确的上下索引值。
...Array的长度。它包含相同数据类型的元素的顺序集合。java中的数组与C++中的函数不同。另一方面,ArrayList可以调整自身大小,数组可以根据需要增长。由于它是一个动态数据结构,因此可以从列表中添加和删除元素。 仿制药 ...
...是以空字符“\0”结尾的ASCII字符。两者在不同编程语言中的实现方式都有很大的不同。数组和字符串在java中的工作方式与C++中的工作方式非常不同。本文介绍数组和字符串之间的无偏比较。 什么是数组(an array)? 许多应用程...
C++中new和Delphi运算符的主要区别在于new被用来为对象或数组分配内存,而DELATE用于释放使用新运算符分配的内存。 有两种类型的记忆作为静态和动态记忆。假设一个语句,比如int a;int数组[10];程序员已经知道这些变量需要多...
...据类型的项。数组允许存储相同数据类型的多个项。数组中的元素位于后续的内存位置。有两种类型的数组,一维数组和二维数组。 覆盖的关键领域 1.什么是一维数组-定义,功能2.什么是二维数组-定义,功能3.一维数组和二维...
...和结构是C语言中两个基本的编程概念。总的来说,数组中的元素具有相同的数据类型,而结构中的元素具有不同的数据类型。 覆盖的关键领域 1.什么是C编程中的数组–定义,功能2.什么是C编程中的结构–定义,功能3.C编程中的...
...最常用的数据类型。数组是C#编程语言的基本功能,而C#中的Arraylist是一个集合。Array和ArrayList都用于存储数据,对要存储的任何数据类型都没有限制。数组表(arraylist) vs. c中的数组#(array in c#)Array和ArrayList的区别在于,Array存储的...
...行诸如检索、更新和插入XML数据之类的操作。 作为一名Delphi程序员,您应该知道如何使用XML文档。 xml与delphi 有关将Delphi与XML配对的更多信息,请阅读: 了解如何将TTreeView组件项存储到XML(保留树节点的文本和其他属性)...
...止其他人操纵这些加载项文件。 本文将向您展示如何在Delphi可执行文件中嵌入(和使用)声音文件、视频剪辑、动画以及更一般的任何类型的二进制文件。对于最通用的用途,您将看到如何将MP3文件放入Delphi exe中。 资源文...
简单地说,文件是某种类型的二进制序列。在Delphi中,有三类文件:类型化、文本和非类型化。类型化文件是包含特定类型数据的文件,例如双精度、整数或以前定义的自定义记录类型。文本文件包含可读的ASCII字符。当我们想...
如果您打算成为一名优秀的Delphi程序员,那么“接口”、“实现”和“使用”等词需要在您的编程知识中占有特殊的位置。 德尔福项目 当我们创建一个Delphi应用程序时,我们可以从一个空白项目、一个现有项目或Delphi的一...