Fixed-length Arrays
 
固定大小的均匀数据结构。

概观

固定长度的数组是阵列,在程序执行过程中具有固定的常量。固定长度数组用于存储其元素的内存是在可执行文件的堆栈或.BSS.DATA部分的编译时赋值的,这取决于是否使用Static来定义它。这可能允许更快的程序执行,因为阵列的内存已经被赋值,不像可变长度数组,其元素内存在运行时间之前没有被赋值。

具有automatic storage 的固定长度数组的元素赋值在程序堆栈上,指向这些元素的指针仅在数组范围内保持有效。具有static storage 的固定长度数组的元素在可执行文件的.DATA.BSS部分中赋值,这取决于它们是否在定义时被初始化,因此指向这些元素的指针对于整个执行该程序。任何存储类的固定长度数组在程序执行过程中无法调整大小,只能可变长度数组可以。

固定长度数组也可以用作用户定义的类型内的数据成员,在这种情况下,数组直接作为用户定义类型结构的一部分赋值。

宣言

使用DimStatic关键字声明一个固定长度的数组,后跟一个变量标识符,一个括号的边界列表和一个元素数据类型.

'' Defines a one-dimensional fixed-length array of type INTEGER having automatic storage.
Dim arrayOfIntegers(69) As Integer

'' Defines a one-dimensional fixed-length array of type SHORT having static storage.
Static arrayOfShorts(420) As Short


有多种方法来指定数组的元素数量。每个阵列可以有1或8维。每个维度都有一个下限和一个上限。

Dim a(1) As Integer  '' 1-dimensional, 2 elements (0 and 1)
Dim b(0 To 1) As Integer  '' 1-dimensional, 2 elements (0 and 1)
Dim c(5 To 10) As Integer  '' 1-dimensional, 5 elements (5, 6, 7, 8, 9 and 10)

Dim d(1 To 2, 1 To 2) As Integer  '' 2-dimensional, 4 elements: (1,1), (1,2), (2,1), (2,2)
Dim e(255, 255, 255, 255) As Integer '' 4-dimensional, 256 * 256 * 256 * 256 elements


对于要声明为固定长度的数组,必须使用数字字面值或Const值或Enum常量指定边界。

Const myLowerBound = -5
Const myUpperBound = 10

'' Declares a one-dimensional fixed-length array, holding myUpperBound - myLowerBound + 1 String objects.
Dim arrayOfStrings(myLowerBound To myUpperBound) As String

'' Declares a one-dimensional fixed-length array of bytes,
'' big enough to hold an INTEGER.
Dim arrayOfBytes(0 To SizeOf(Integer) - 1) As Byte