理论教育 VisualBasic:静态数组和动态数组

VisualBasic:静态数组和动态数组

时间:2023-11-19 理论教育 版权反馈
【摘要】:建立动态数组的步骤:第一步:声明一个没有下标的数组为动态数组。{Public|Private|Dim}数组名()[As类型]第二步:在使用时可多次用ReDim语句为动态数组动态分配空间。图9-3动态数组演示说明:在窗体层或模块层定义的动态数组只有类型,没有指定维数,其维数在ReDim语句中给出,最多不能超过8维。Erase语句用来重新初始化静态数组成部分元素,或者释放动态组的存储空间。

VisualBasic:静态数组和动态数组

根据内存区开辟时机的不同,可以把数组分为静态数组和动态数组,通常把需要在编译时开辟内存区的数组叫静态数组,而把需要在运行时开辟内存区的数组叫动态数组。

一、动态数组的定义

在解决实际问题时,所需要的数组到底应该有多大才合适,有时可能不得而知,所以希望能够在运行时改变数组的大小。使用动态数组就可以在任何时候改变其大小,并且可以在不需要时清除动态数组所占的存储空间。因此,使用动态数组更加灵活、方便,并有助于高效管理内存。事先不知道数组的大小,并希望在运行时可以根据需要改变数组的大小,这时就要使用动态数组。建立动态数组的步骤:

第一步:声明一个没有下标的数组为动态数组。{Public|Private|Dim} 数组名()[As类型]

第二步:在使用时可多次用ReDim语句为动态数组动态分配空间。

ReDim[Preserve]数组名([下界1 to]上界1[,下界2 to]上界2…])[As数据类型]

示例:

说明:

(1)ReDim语句用来更改动态数组的维数或大小。

(2)ReDim语句不能更改动态数组的数据类型。

ReDim为数组分配空间时会清除原有的数据,故想在原有数组中追加空间可添加Preserve关键字,此时ReDim只能改变多维数组中最后一维的上界,否则运行程序报错。

动态数组以变量作为下标值,在程序运行中完成定义。通常分为两步,首先在窗体层、标准模块或过程中用Dim和Public声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。

ReDim语句的格式为:

Redim[Preserve]变量(下标)As类型

该语句用来重新定义动态数组,按定义的上下界重新分配存储单元,并可为定义的变量改变存储类型,当重新分配动态数组时,数组中的内容将被清除,但如果在ReDim语句中使用了Preserve选择项,则不清除数组内容。

ReDim只能出现在事件过程中,用它定义的数组是一个临时数组,即在执行数组所在的过程时为数组开辟一定的内存空间,当过程结束时,这部分内存即被释放。

图9-3 动态数组演示

说明:(www.daowen.com)

(1)在窗体层或模块层定义的动态数组只有类型,没有指定维数,其维数在ReDim语句中给出,最多不能超过8维。

(2)用ReDim语句定义的数组最多可达到60维(直接定义才可以达到60维)。

(3)可以多次用ReDim语句定义同一个数组,随时修改数组中元素的个数,而在事件过程中,开始时用ReDim定义的数组,只能改变元素的个数,不能改变数组的维数,也不能用ReDim改变数组的类型。

二、数组的清除和重定义

数组一经定义,便在内存中分配了相应的存储空间,其大小是能改变的,在一个过程中,同一个数组只能定义一次,有时候可能需要清除数组的内容,或对数组重新定义。这可以用Erase语句来实现,其格式为:

Erase数组名[,数组名]……

Erase语句用来重新初始化静态数组成部分元素,或者释放动态组的存储空间。(释放动态数组时整体都不存在)

1.静态数组

对于静态数组,例:

图9-4 静态数组元素清除

2.动态数组

对于动态数组,例:

图9-5 动态数组释放空间

说明:当把Erase语句用于静态数组时,如果这个数组是数值数组,则把数组中所有的元素置为0,如果是字符串数组,则把所有元素置为空字符串。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈