redim语句

来源:互联网 发布:大数据 态势感知 编辑:程序博客网 时间:2024/05/19 22:04
ReDim语句

描述
用于过程级声明动态数组变量并分配或重新分配存储空间。
语法
ReDim [Preserve]varname(subscripts) [,varname(subscripts)] . . .

ReDim 语句语法有以下部分:

部分描述Preserve当更改现有数组最后一维的大小时保留数据。varname变量名,遵循标准变量命名约定。subscripts数组变量的维数,最多可以声明 60 维数组。subscripts 参数语法格式如下:

upper [,upper] . . .

数组的下界总是零。

说明
ReDim 语句通常用于指定或修改动态数组的大小,这些数组已用带有空括号的PrivatePublicDim 语句(没有维数下标)正式声明过。可以重复使用ReDim 语句更改数组维数和元素数目。

如果使用了 Preserve关键字,就只能调整数组最后维的大小,并且不能改变数组的维数。例如,如果数组只有一维,就可以修改该数组的大小,因为该维是最后的也是仅有的一维。但是,如果数组有两个或更多维,就只能改变末维的大小并保留数组内容。

下面的样例示范了如何不删除动态数组的原有内容而又增加末维的大小。

ReDim X(10, 10, 10). . .ReDim Preserve X(10, 10, 15)
小心 如果减小数组的大小,则将丢失被排除的元素中的数据。

 

 

此命令有两种填写格式:
1:
ReDim+变量名+数组维数
2:
ReDim+Preserve+变量名+数组维数

第一种格式为完全重新分配一个新的数组,即将数组内容清空后,再给你分配一个新的,只是数组名字是你原来的

第二种格式为扩充维数,即原来的数组内容不变,单纯地增加下标。增加的下标为新的下标-旧的下标

(使用Redim写的代码,运行后直接将前面值覆盖了,看后一段代码)

Dim TempNum()
ReDim TempNum(5)
For i = 0 To 99
TempNum(i) = i
If i = UBound(TempNum) Then
维数达到最大下标,如不补充维数将越界。
Redim TempNum(i + 5)
补充维数
End If
Next
For i = 0 To 99
TracePrint TempNum(i)
打印内容测试是否赋值成功。
Next

 

运行的结果是:

redim语句

 

用Redim preserver

ReDim TempNum(5)
For i = 0 To 99
TempNum(i) = i
If i = UBound(TempNum) Then
//维数达到最大下标,如不补充维数将越界。
Redim Preserve TempNum(i + 5)
//补充维数
End If
If i mod 2<>0 then          //i mod 2=0 说明是偶说  i mod 2<>0表示是奇数
sum = sum +i           //从0+到n的方法
TracePrint sum
End if
Next
For i = 0 To 99
TracePrint TempNum(i)
//打印内容测试是否赋值成功。
Next

运行的结果为

redim语句

 

可能有人会问我,为什么不用Dim(99999),这样不是还方便一些?其实描述分配变量是需要内存空间的!声明的越大,所需内存就越大!

0 0
原创粉丝点击