第六章  数组
双击滚屏  关闭窗口

 

6.3 动态数组

  6.3.1 创建动态数组
  6.3.2 保留动态数组的内容
  

动态数组 :

在定义数组时,一般己经指定了上下界,这样数组大小就确定了。但是有时可能事先无法确认到底需要多大的数组,所以希望能够在运行时改变数组的大小,这就要用到动态数组。动态数组可以在任何时候改变大小。

在 VB 中,动态数组灵活、方便,有助于有效利用内存。例如,可短时间使用一个大数组,然后,在不使用这个数组时,将内存空间释放给系统。

6.3.1 创建动态数组

要创建动态数组,可按照以下步骤进行 :

1) 用 Public 语句 ( 公用数组 ) 、 Dim 语句 ( 模块级数组 ) 、 Static 或 Dim 语句 ( 局部数组 ) 在过程中声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。

2) 用 ReDim 语句分配实际的元素个数。格式为 ReDim [Preserve] 数组名 (< 维数定义 >)[As< 类型 >]

说明:

(1) ReDim 语句只能出现在过程中。与 Dim 语句、 Static 语句不同, ReDim 语句是一个可执行语句。

(2) 对于任一维数, ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。

(3) 可以用变量设置动态数组的边界 :

ReDim M(x , y)

(4) 声明动态数组的时候并不指定数组的维数,数组的维数由第 1 次出现的 ReDim 语句指定。

 

例 5 :利用动态数组,解决斐波那契 (Fibonacci) 数列问题。

程序代码:

Private Sub Text1_KeyPress(KeyAscii As Integer)

Dim n As Integer

List1.Clear

If KeyAscii = 13 Then

n = Val(Text1.Text)

ReDim f(n)

f(0) = 0: f(1) = 1

p = Format("Fib(" & 1 & "):", "!@@@@@@@@@@@@@") & Format(f(1), "########")

List1.AddItem p, 0

For i = 2 To n

f(i) = f(i - 1) + f(i - 2)

p = Format("Fib(" & i & "):", "!@@@@@@@@@@@@@") & Format(f(i), "########")

List1.AddItem p, i - 1

Next

End If

End Sub

执行结果:

               

 

6.3.2 保留动态数组的内容

?每次执行 ReDim 语句时,当前存储在数组中的值将全部丢失。 VB 重新将数组元素的值置为 0( 对 Numeric 数组 ) 、置为零长度字符串 ( 对 String 数组 ) 、 Empty( 对 Variant 数组 ) 、或者置为 Nothing( 对于对象的数组 ) 。
?有时希望改变数组大小而又不丢失数组中的数据,使用具有 Preserve 关键字的 ReDim 语句可以做到这点。

 

 
双击滚屏  关闭窗口
 
版权所有数学与信息科学学院