代码改变世界

动态数组的声明与例子练习

2011-01-12 16:36  javaspring  阅读(528)  评论(0编辑  收藏  举报

动态数组

在有些情况下,用户可能不知道需要多大的数组,这时就需要用一个能够改变大小的数组,这就是动态数组。动态数组可以在任何时侯改变大小。在VB中,动态数组是最灵活、最方便的一种数组。利用动态数组还有助于有效管理内存,因为动态数组是使用时才开辟内存空间,在不使用这个数组时,还可以将内存空间释放给系统。这样就可以最大限度地节省内存,提高运行速度。

创建动态数组需要2,第一步和固定长度数组(静态数组)类似,用Dim语句(PrivatePublicStatic)声明,但是不要指定维数如:

    Dim MyArry () As Integer

第二步在以后的实际程序中,当要用到该数组时,再用ReDim语句分配实际的元素个数,这时需要确定元素的个数。如前面声明的数组MyArry,可以用下面语句将它定义为一个二维数组:

    ReDim MyArry(10,10)

ReDim语句只能出现在过程中。与Dim语句、Static语句这些变量声明语句不同,ReDim语句是个可执行语句,ReDim语句可以改变元素数目以及上下界,但在第一个ReDim语句定义了数组维数之后,就不能够再改变数组维数(最多能定义的维数是60),只能改变数组边界。如:

    Dim MyArry () As Single '声明动态数组
    ReDim MyArry(30,20,10)  
'重新定义数组
    ReDim MyArry(50,23,21)  
'再次重新定义数组(这时不能再改变维数)

每次执行ReDim语句时,Visual Basic会把动态数组中的数值重新初始化一遍,当前存储在数组中的值都会全部丢失。但是用户有时希望只改变数组大小,但不丢失数组中的数据。这时,可以使用带Preserve关键字的ReDim语句。其格式为:

    ReDim  Preserve数组名([下标下界 To]下标上界) [As 数据类型]

例如:

    ReDim MyArry502321

    ReDim Preserve MyArry502350

注意:Preserve只能在改变数组的最后一维大小时,保留数组的数据。对一维数组来说,所有数据都会保留,而对于多维数组,只能改变最后一维的大小,才能保留全部数组数据,否则出错。