一、静态数组的概念
所谓静态数组是指在程序编译阶段给数组分配内存空间,该数组在没有运行时已有了相应的内存区。静态数组变量的值在定义该变量的程序结束后,该数组所拥有的内存空间不释放,变量的值仍在内存中,再次运行时,将上次运行的结果作为该变量的初始值。只有当整个程序退出时,数组所占内存才会释放。静态数组用Static语句来声明,格式如下:
Static 数组名([下标1下界TO]下标1上界,[下标2下界TO]下标2上界,…)[As类型名]
说明:除不能省略下标的“上界”外,其余与Dim声明数组方法一样。
二、静态数组的应用
由于静态数组具有“记忆”前次运行结果的能力,因此它非常适用于多次运行但不能丢失原有数据的情况,如多个数值的累加。以下示例说明了“静态数组”与“非静态数组”的区别。
[例5-7]“静态数组”与“非静态数组”的区别。
程序清单如下:
Option Explicit
Private Sub Command1_Click()
Static test1(1 To 5) As Integer ' 说明静态数组
Dim test2(1 To 5) As Integer ' 说明非静态数组
Static start As Integer ' 说明静态变量
Dim i As Integer
If start = 0 Then ' 仅显示一次标题
Print "静态数组:"; Tab(30); "非静态数组:"
End If
start = start + 1
For i = 1 To 5 ' 对数组赋值
test1(i) = test1(i) + i
test2(i) = test2(i) + i
Next i
For i = 1 To 5 ' 显示静态数组
Print Tab((i - 1) * 4); test1(i);
Next i
Print ,
For i = 1 To 5 ' 显示非静态数组
Print test2(i);
Next i
End Sub
图5-5 “静态数组”与“非静态数组”的区别
过程Command1_Click对数组元素做增值运算。图5-5是单击命令按钮5次,即执行5次事件过程后看到的结果,静态数组test1由于“记住”了上一次的结果,所以起到累加作用;而非静态数组test2每一次都重新初始化,所以执行结果都一样。静态简单变量start记录了单击命令按钮的次数,即执行事件过程的次数,所以只有第一次执行事件过程时才显示标题。