VB中数组的定义是什么?
一、数组的概念
数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。数组元素的个数有时也称之为数组的长度。
一般情况下,数组的元素类型必须相同,可以是前面讲过的各种基本数据类型。但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型。
数组和变量一样,也是有作用域的,按作用域的不同可以把数组分为:过程级数组(或称为局部数组)、模块级数组以及全局数组。
二、定长数组和动态数组
定长数组
定长数组的长度是在定义时就确定的,在程序运行过程中是固定不变的。其定义格式为:
Dim数组名([下界TO]上界)[As类型名]
其中,数组的下界和类型是可选的。所谓下界和上界,就是数组下标的最小值和最大值。缺省下界时,vB默认的下界是0,但通常人们习惯上是从1开始的,因此我们可以设置让数组的默认下界为1,这需要在每个模块的“(声明)”部分添加一行代码:
如果定义数组时不指定其类型,默认是变体型的。
下面举例说明定长数组的定义:
①Dim
a(1 to 3)As Integer
②Dim b(5 to 9)As String
③Dim c(7)As Integer
④Dim
d(6)
其中,例①定义了一个具有三个元素的整型数组,其下标从1到3。例②定义了一个具有五个元素的字符型数组,其下标从5到9。例③缺省了下界,它定义了一个具有八个元素的整型数组,其下标从0到7。例④则缺省了下界和类型,定义的是具有七个元素的变体型数组,其下标从0到6。如果在该模块的“(声明)”部分添加了Option
base 1,则例③和例④的下标都是从l开始了。
在定义定长数组时,其上界和下界必须是常数或常量表达式。
动态数组
在很多情况下,数组的长度事先是无法预测的,而且有时可能需要在程序中改变数组的长度以适应新的情况,因此出现了动态数组。动态数组是在定义数组只指定数组名及其类型,等以后知道数组的长度或需要改变数组长度时再用“ReDim”指定它的长度。现举例如下:
Dim X AS Integer
Dim a()As String
……
ReDim a(x)
……
X=X+3
ReDim
a(x)
其中的“…”代表其它代码。这段代码首先定义了一个整型变量和—个字符型的动态数组,之后经过一系列运算后使变量X得到一个定值,再使用“ReDim”指定数组的长度,最后根据需要又再一次改变了数组的长度。
虽然可以一次或多次改变动态数组的长度,但当重新指定数组长度时,数组内原有的数据降会被清除。如果既想改变数组的长度,又想保留数组原有的数据,则在使用“ReDim”时需要加上“Preserve”关键字。例如:ReDim
Preserve
a(x)。但要注意,如果缩小数组长度,那么数组中超出新的下界到上界之间的元素将清除,即使使用了“Preserve’’关键字,也不会保留这些元素,如果仍然访问这些元素将会引起“下标越界”的错误!
当不需要再使用某个动态数组时,我们可以使用“Erase”删除该数组,以释放该数组占用的内存空间,例如:Erase
a()。
三、多维数组及数组元素的引用
一个数组可以是一维的,也可以是多维。当需要表示平面中的一个点坐标,就需要用到二维数组;表示空间中的一个点时,就需要用到三维数组。多维数组的定义格式为:
Dim数组名([下界TO]上界[,TO 上界[下界 TO]
[,…])[AS类型名]
多维数组的定义格式与—一维数组基本上是一致的,只是多加几个上界和下界。
现在举例如下:
Dim a(1 TO 3,1
TO 4) As Integer
Dim b(5, 9) As Siring
Dim b(4, 3)
这三行语句分别定义了一个两维数组,第一个指定了下界及类型;第二个只指定了类型
使用默认的下界;最后一个下界和类型都没有指定,其类型是变体型的。
对数组元素的引用,是数组名加下标的形式。例如:
Dim a(5)as
Integer
Dim b(3,4)as
Integer
a(1)=3
a(2)=5
a(3)=a(1)+a(2)
b(2,1)=a(2)
msgbox
a(3)
msgbox
b(2,1)
在此例中,先对数组a的前三个元素赋值,再给数组b的一个元素赋值,最后显示两个数组元素的值。用数组元素时,其下标不要超出了下界至上界的范围。
延伸阅读
vb数组用哪个命令键?
你先在窗体上放入一个命令按钮(比方说是Command1),然后用鼠标点一下(不是两下)它,按Ctrl-C复制,再按Ctrl-V粘贴,这时VB就会问你要不要创建控件数组了,接下来你就知道该怎么做了。
或者把窗体上已有的多个按钮的名称(注意是名称不是标题Caption)改成相同的(比如都是Command1),它们也会变成控件数组。 其他控件也一样的原理。
VB中怎么给数组赋值?
vb定义字符串数组: dim aa(x) as string ‘其中X是数组里元素数量,X从0开始。赋值: 一般用循环,如: For …Next语句 。
每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
使用动态数组的优点是根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时才分配存储单元,而静态数组是在程序编译时分配存储单元。
VB怎么声明数组?
Dim Counters (14) As Integer ’15 个元素。
Dim Sums (20) As Double ’21 个元素。
为建立公用数组,直接用 Public 取代 Dim。
Public Counters (14) As Integer
Public Sums (20) As Double
在过程之中同样的声明使用 Dim:
Dim Counters (14) As Integer
Dim Sums (20) As Double
第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。缺省的下界为 0。
为了规定下界,用关键字 To 显式提供下界(为 Long 数据类型):
Dim Counters (1 To 15) As Integer
Dim Sums (100 To 120) As String
包含其它数组的数组
Private Sub Command1_Click ()
Dim intX As Integer ‘声明计数器变量。
‘声明并放置整数数组。
Dim countersA (5) As Integer
For intX = 0 To 4
countersA (intX) = 5
Next intX
‘声明并放置字符串数组。
Dim countersB (5) As String
For intX = 0 To 4
countersB (intX) = “hello”
Next intX
Dim arrX (2) As Variant ‘声明拥有两个成员的新数组。
arrX (1) = countersA () ‘将其它数组移居到数组。
arrX (2) = countersB ()
MsgBox arrX (1) (2) ‘显示每一个数组的成员。
MsgBox arrX (2) (3)
End Sub
多维数组
有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的 X、Y 坐标。这时应该用多维数组存储值。
可用 Visual Basic 声明多维数组。例如,下面的语句声明了一个过程内的 10 × 10 的二维数组。
Static MatrixA (9, 9) As Double
Static MatrixA (1 To 10, 1 To 10) As Double
Dim MultiD (3, 1 To 10, 1 To 15)
这个声明建立了三维数组,大小为 4 × 10 × 15。元素总数为三个维数的乘积,为 600。
注意 在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 Variant 数组时更要格外小心,因为他们需要更大的存储空间。
用循环操作数组
Dim I As Integer, J As Integer
Static MatrixA(1 To 10, 1 To 10) As Double
For I = 1 To 10
For J = 1 To 10
MatrixA (I, J) = I * 10 + J
Next J
Next I
要创建动态数组,请按照以下步骤执行:
(如果希望数组为公用数组,则)用 Public 语句声明数组,或者,(如果希望数组为模块级,则)在模块级用 Dim 语句声明数组,或者(如果希望数组为局部数组,则)在过程中用 Static 或 Dim 语句声明数组。给数组附以一个空维数表,这样就将数组声明为动态数组。
Dim DynArray ()
用 ReDim 语句分配实际的元素个数。 ReDim DynArray (X + 1)
ReDim 语句只能出现在过程中。与 Dim 语句、Static 语句不同,ReDim 语句是一个可执行语句,由于这一语句,应用程序在运行时执行一个操作。
ReDim 语句支持这样的语法,它与固定数组中使用的语法相同。对于每一维数,每个 ReDim 语句都能改变元素数目以及上下界。但是,数组的维数不能改变。
ReDim DynArray (4 to 12)
例如,用第一次声明在模块级所建立的动态数组 Matrix1:
Dim Matrix1 () As Integer
Sub CalcValuesNow ()
ReDim Matrix1 (19, 29)
End Sub
ReDim 语句给 Matrix 分配一个 20 × 30 的整数矩阵(元素总大小为 600)。还有一个办法,用变量设置动态数组的边界:
ReDim Matrix1 (X, Y)
注意 您可以将字符串赋值给大小可变的字节数组。一个字节数组也可以被赋值给一个可变长的字符串。一定要注意字符串中的字节数会随平台而变化。同一个字符串在 Unicode 平台上的字节数是它在非 Unicode 平台上的两倍。
保留动态数组的内容
每次执行 ReDim 语句时,当前存储在数组中的值都会全部丢失。Visual Basi 重新将数组元素的值置为 Empty(对 Variant 数组)、置为 0(对 Numeric 数组)、置为 零长度字符串(对 String 数组)或者置为 Nothing(对于对象的数组)。
,这样做是非常有用的。有时希望改变数组大小又不丢失数组中的数据。使用具有 Preserve 关键字的 ReDim Preserve DynArray (UBound (DynArray) + 1)
ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)
而不可这样编程:
ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)
vb数组怎么求?
vb数组所占空间就是数组中的元素个数。计算数组所占空间实际上就是计算数组的元素个数,数组的下标相乘或者遍历元素都可实现。
如何在vb里定义一个数组?
有两种方法定义数组:
1、知道数组的元素个数,那么直接定义dim a(9) as integer
2、暂时不知道元素个数,或者该数组应用在多个地方那么如下定义dim a() as integer
vb中哪几个语句声明数组?
A dim a[3,4]as integer 中括号在VB里面不能用来声明数组,在C语言中可以,如:int a[3,4];
b dim a(3,4) as integer 正确的声明
c dim a(m,n) as integer 变量是不确定的值,不能用于数组的声明
d dim (3,4) as integer 这根本就不是个数组在VB中声明数组形式可以有:dim a(3,4) as integer 定义一个整形的二维数组dim a(3,4) 没有定义它的类型,默认为变体型dim a() as integer 定义一个空的整形数组,称为动态数组,在以后的代码中你可以根据这个重新定义静态数组,比如:redim a(3,4)dim a() 定义一个空的数组,默认为变体型,方法跟上面差不多
vb中定义数组时?
第一种形式:dima(3)asinteger’定义一个数组(有四个数),默认上限为a(0)a(0)=2’为a(0)赋值a(1)=3a(2)=4a(3)=5dimb(3to5)’这样定义就规定了上限和下限(有三个数),上限为b(3),下限为b(5),然后可赋值不限定大小的数组定义dimc()asinteger’可以赋多个值
VB数组元素是什么?
1.基本概念数组:是同类型变量的一个有序的集合。
如:A(1 To
100),表示一个包含100个数组元素的名为A的数组。
2.数组元素:
即数组中的变量。用下标表示数组中的各个元素。
表示方法:数组名(P1,P2,……)其中P1、P2表示元素在数组中的排列位置,称为“下标”。
如:A(3,2)代表二维数组A中第3行第2列上的那个元素。
3.数组维数:
由数组元素中下标的个数决定,一个下标表示一维数组,二个下标表示二维数组。 VB中有一维数组、二维数组、……最多60维数组。
VB中数组到底是什么意思?可以做什么?
数组可以看做是某种变量的集合 比如你定义一个整型数组a(9),就可以给a(0)~a(9)赋值,需要调用的时候也非常方便。
如果没有数组,就需要用户自己命名,如果要保存10个整型数据,就得定义十个不同的整型变量,非常麻烦。
比如:dim a(9) as integerfor i=0 to 9a(i) =inext i这样就很快捷的给0~9这十个数定义了十个变量来保存