简单的说吧 就是dim 和 redim 的区别
如果我代码修改成这样 你就好理解了
dim arr3(1 to 4)
arr3=array(1,4,2,8,9,10)
arr3固定数组只能有4个元素 而array有6个参数 要返回6个元素的数组
dim arr3(1 to 4)
redim arr3(1 to 6)
这样肯定是不能执行的
同理在array内部是不判断arr3到底有几个元素的空间 能不能和参数的个数所匹配 它只看你是不是动态数组 能不能按array参数的个数来redim 然后给你赋值而已
因为arr3=array(1,4,2,8)已经明确定义
dim arr3(1 to 4)是变成多余的了
数组在使用之前必须先定义。
按数组占用存储空间的方式不同,分为两种数组:静态数组和动态数组。
静态数组的定义:Public|Private|Dim 数组名([下界1 To] 上界1,[下界2 To] 上界2,…) [As 类型],…
动态数组的定义:首先在模块级或过程级定义一个没有下标的数组 :
Public|Private|Dim 数组名()[As 类型],…
例:Dim A() As Integer
然后在过程级使用ReDim语句定义数组的实际大小:
ReDim [Preserve] 数组名([下界1 To] 上界1,[下界2 To] 上界2,…) [As 类型],…
例: ReDim A(1 To 10) As Integer
ReDim Preserve A(1 To 20) As Integer
在使用数组时,还可以通过数组操作函数完成一些操作。例如Array函数:Array(参数表)。:Array函数将其“参数表”的值构成数组的各元素值,并赋值给一个Variant类型的变量,注意只能赋值给Variant类型的变量,赋值后的数组大小由参数的个数决定,数组下标的下界由Option Base语句指定的下界决定。
例如:
Dim A
A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
执行上述语句后数组A各元素值为:
A(0)=1,A(1)=2,A(2)=3,…,A(9)=10
微软就这么规定的,你说为什么1+1=2?