3.4 数组
Visual Basic中可以使用变量来存放数字、日期、字符等单个数据。在计算中常常会遇到类型相同的一组相关数据,仍然使用变量来存放就很不方便,此时可以利用数组。数组也就是能够保存具有相同数据类型的多个数值的存储空间。
3.4.1 数组的定义
在内存中数组是一个连续的内存块。数组的定义必须用Dim或Global语句声明。数组中的每一个数据称为数组元素,用数组名和该数据在数组中的序号来标识。序号又称为下标,数组元素又称为下标变量。例如,S(2)是一个数组元素,其中的S称为数组名,2是下标。在使用数组元素时,必须把下标放在一对紧跟在数组名之后的括号中。S(3)是一个数组元素,而S3是一个简单变量。
如果只用一个下标就能确定某个数组元素在数组中的位置,这样的数组称为一维数组。如果用两个或多个下标才能确定某个数组元素在数组中的位置,则数组分别称为二维数组或多维数组。其语法格式如下:
Dim数组名([下标下限to ]下标上限[,[下标下限to ]下标上限]…) [As数据类型]
如下面的语句将定义一个一维数组。
Dim MyStr(5) As String
数组MyStr(5)中包含了6 个元素,数组的元素从0 开始包括MyStr(0)、MyStr(1)、MyStr(2)、MyStr(3)、MyStr(4)、MyStr(5)。
而下面的语句则定义了一个二维数组。
Dim MyStr(4,5) As String
上述的二维数组包含了5×6=30个元素。
注意
数组的最大维数为60。数组中的所有元素的数据类型都必须相同,如果要定义含有不同数据类型的数组,可以将数组声明为变体型数组,或者通过用户自定义数据类型来定义。
3.4.2 动态数组
定义数组时会开辟所需的内存区,不同的开辟时机对应不同的数组:静态数组和动态数组。静态数组是在编译过程时开辟的内存数组,而动态数组则是在运行时开辟的内存数组,在未运行时并不占有内存。
前面所述为静态数组,要生成动态数组,首先用声明语句声明不指定数组维数和长度的数组。如下面的语句:
Dim MyStr() As String
等到后面能确定实际长度的时候,再使用ReDim语句重新确定实际长度,示例如下:
ReDim MyStr(5)
ReDim语句只能出现在事件过程或通用过程中,所定义的数组是一个临时数组,当过程结束时,这部分内存将被释放。ReDim语句可以反复使用,用于改变数组的维数和元素个数,但不能改变数组类型。
注意
要在第二次使用Redim语句时保留上一次的数组数据,在Redim语句后加Preserve关键字。