variant 字符串数组_VB数组部分核心知识总结

‍数组讲解

今天我们来学习有关数组的相关知识。

为了解决大批量的数据处理问题,VB中提供了数组(Array)变量。数组是一种重要的数据结构,在许多程序设计语言中,都要直接或间接用到数组这种数据结构。

数组的概念

在VB中,如果把一组有序的数或变量作为一个整体来处理,这一组数或变量称为数组,数组中的每一个数或变量称为数组元素,每一个数组给定一个名称,叫做数组名,一个数组中各个数组元素之间的区别用数组名的下标来表示,放在数组名后的圆括号内。数组中的任意一个数组元素都可以存放一个数据,和使用简单变量一样,所以又称数组元素为下标变量。

例如:用A来表示一个班50个同学的数学成绩,用A(1)表示1号同学的成绩;A(2)表示2号同学的成绩;A(3)表示3号同学的成绩;...;A(50)表示第50号同学的成绩。则A为数组名,A(1)、A(2)、A(3)等都称为A数组的元素。

数组也有数值型和字符串型等类型之分。在一个数组中通常只能放置一种类型的数据,并且与数组的类型一致。

此外,数组还有静态数组和动态数组之分。

注意:在使用数组前通常都要对数组进行维数、类型及大小等内容的定义或说明。

静态数组

一、静态数组定义

静态数组是在定义数组时就指定了数组维数的多少及数组的大小。

1、语法

Dim  276eab406274357c3992905db7227345.gif

redim

Static

Public

2、语法说明:

(1)Dim:定义窗体模块数组。ReDim:在过程中定义。Static:在过程中定义。Public:在标准模块中定义全局数组。

(2)数组名的命名规则和变量命名规则相同,但是数组名不能与一般变量同名。

(3)凡是VB的数据类型,在数组中都可以说明和使用,当“As类型”省略时,为变体型数组(Variant)。

(4)下限值和上限值的大小范围是从-32768至32767。下限值及关键字TO可以省略,当省略时下限值为0。使用数组时,其下标不能超出所定义的范围。下标可以是负数。

(5)维数可以多达60维。

(6)数组要先定义后使用。

(7)在一个过程内部,数组名不能与某个变量同名。

(8)用Dim语句定义数据组,数值型元素置0,字符型元素置空字符串。

(9)可用类型说明符说明数组类型。

(10)若在定义时不指明下标,下标为0,这里可用Option Base 1定义下标为1。

例子:数组定义举例

定义的例子

数组维数

数组元素

Dim A(5) As Integer

‘整型

一维

A(0), A(1),A(2), A(3), A(4), A(5)

Dim A(1 To 5) As String

‘字符型

A(1),A(2), A(3), A(4), A(5)

Dim B(2,3) As Single

‘单精度实型

二维

B(0,0),B(0,1),B(0,2),B(0,3)

B(1,0),B(1,1),B(1,2),B(1,3)

B(2,0),B(2,1),B(2,2),B(2,3)

Dim B(1 To 2,1 To 3) As Integer

‘整型

B(1,1),B(1,2),B(1,3)

B(2,1),B(2,2),B(2,3)

Dim C#(2,3,2) ‘双精度实型

三维

C(0,0,0),C(0,0,1),C(0,0,2)

C(0,1,0),C(0,1,1),C(0,1,2)

C(0,2,0),C(0,2,1),C(0,2,2)

C(0,3,0),C(0,3,1),C(0,3,2)

C(1,0,0),C(1,0,1),C(1,0,2)

C(1,1,0),C(1,1,1),C(1,1,2)

C(1,2,0),C(1,2,1),C(1,2,2)

C(1,3,0),C(1,3,1),C(1,3,2)

C(2,0,0),C(2,0,1),C(2,0,2)

C(2,1,0),C(2,1,1),C(2,1,2)

C(2,2,0),C(2,2,1),C(2,2,2)

C(2,3,0),C(2,3,1),C(2,3,2)

二、测试数组上、下标函数

1、测试数组下标函数:Lbound(数组[,维])

2、测试数组上标函数:Ubound(数组[,维])

例子:

Dim D(3, 5, 7,9) As String

Private Sub Form_Click()

Print LBound(D, 1),

Print UBound(D, 1)

Print LBound(D, 2),

Print UBound(D, 2)

Print LBound(D, 3),

Print UBound(D, 3)

Print LBound(D, 4),

Print UBound(D, 4)

End Sub

结果显示:

0    3

0    5

0    7

0    9

三、变体型(默认)数组

若定义数组时不指定类型,则该数组是一个变体型数组。其元素的类型可以不同。

即:Dim A(2,3)等同于:Dim A(2,3) As Variant

例子:

Dim A(5)

Private Sub Form_Click()

A(1) = "中华人民共和国"

A(2) = 12345

 A(3) = 3456789

 A(4) = 987654321

 A(5) = "ABCDE" + "abcde"

 Print A(1)

Print A(2)

Print A(3)

Print A(4)

Print A(5)

End Sub

四、数组的操作

数组的操作包括对数组元素进行数值的输入、输出和复制。

1、数组元素的赋值

方法一:用赋值语句对数组元素逐个赋值。

例子:

Dim A(5)

Private Sub Form_Click()

 A(1) = "中华人民共和国"

A(2) = 12345

 A(3) = 3456789

 A(4) = 987654321

 A(5) = "ABCDE" + "abcde"

 Print A(1)

 Print A(2)

 Print A(3)

 Print A(4)

 Print A(5)

End Sub

方法二:用赋值语句结合For循环语句。

Dim D(0 To 2, 1 To 3) As Integer

Private Sub Form_Click()

 For i = 0 To 2

   For j = 1 To 3

     D(i, j) = 100

     Print D(i, j)

   Next j

Next i

End Sub

方法三:用InputBox函数。

Dim array1(5) As Variant

Private Sub Form_Click()

For i = 1 To 5

 array1(i) = InputBox("输入元素的值:")

Next i

For i = 1 To 5

 Print array1(i)

Next i

End Sub

方法四:对于 变体型一维数组,可应用Array()函数赋值。

格式:Array(值1,值2,值3… …)

例子:设一个一维变体型数组ABC,不指定维数,用Array()函数赋值,然后显示元素值。

Option Base 1

Dim ABC

Private Sub Form_Click()

 ABC = Array("One", "Two", "Three", "Four", 1, 2, 3, 4, 5, 6)

 For i = 1 To 10

   Print ABC(i)

 Next i

End Sub

2、数组元素值的输出

用Print语句显示输出。前面有相应的例子。这里讨论如何进行“格式”输出。

例子:设有一个单精度实型三维数组array2(2,3,4),其元素值:

11 12 13 14

15 16 17 18

19 20 21 22

31 32 33 34

35 36 37 38

39 40 41 42

源程序如下:

Option Base 1

Dim array2(2, 3, 4) As Single

Private Sub Form_Click()

For i = 1 To 2

  For j = 1 To 3

     For k = 1 To 4

      array2(i, j, k) = InputBox("输入元素的值:")

Next k

 Next j

Next i

For i = 1 To 2

  For j = 1 To 3

     For k = 1 To 4

       Print array2(i, j, k); "";

     Next k

     Print

 Next j

 Print

Next i

End Sub

3、For Each … Next语句

该语句是专门用于数组操作的语句。

(1)语句格式

For Each 成员 in 数组

循环体

[ Exit For]

… …

Next 成员

(2)说明

利用语句中的成员变量可实现数组元素的赋值、计算、显示等操作。

例子:设一个二维数组array5(3,4),将其中的第一个元素赋值100,后面的元素依次再加1赋值

Option Base 1

Dim array5(3, 4)

Private Sub Form_Click()

 n = 100

 For Each x In array5        ’x为成员

x = n

   n = n + 1

   Print x

 Next x

End Sub

五、嵌套数组

在Visual Basic中,可以用一个数组作为另一个数组的元素。在使用时,可将一个数组(嵌套数组)赋值给另一个数组(被嵌套数组)的元素,嵌套数组名后面加空括号。

要求:嵌套数组是数据类型,被嵌套数组不指定类型。

例子:将数组a(4)赋给数组b(2),

Dim a(4) As Integer

Dim b(2)

Private Sub Form_Click()

For i = 1 To 4

 a(i) = i

 Next i

 b(1) = a()

b(2) = a()

Print b(1)(1)

Print b(1)(2)

Print b(1)(3)

Print b(1)(4)

Print

 Print b(2)(1)

Print b(2)(2)

Print b(2)(3)

Print b(2)(4)

End Sub

动态数组

动态数组是指其数组的维数及大小可以重新定义,根据应用的环境不同随时说明其维数及大小。“动态数组”是由变量作为下标的数组,其下标在程序运行时完成定义。

一、动态数组的定义

第一步:用Dim语句或Public语句定义一个只有空括号而无下标的数组。

第二步:用ReDim定义带下标的数组。语句的格式:

ReDim [Preserve] 变量(下标) As 类型

在定义时,类型与Dim语句中的类型要一致。下标通过变量赋值解决。

例子:

Dim A() As Integer

Private Sub Form_Click()

n = InputBox("输入n的值:")

ReDim A(n)

For i = 1 To n

 A(i) = 12345

 Print A(i)

Next i

End Sub

可以动态地定义多个数组。例子:

Dim A() As Integer, B() As Integer

Private Sub Form_Click()

n = InputBox("输入n的值:")

m = InputBox("输入m的值:")

ReDim A(n, m)

ReDim B(n, m)

For i = 1 To n

  For j = 1 To m

    A(i, j) = 12345

    B(i, j) = 23456

    Print A(i, j), B(i, j)

Next j

 Next i

End Sub

二、数组的清除和重定义

数组一经定义,在内存中会分配相应的存储单元,其大小是不能改变的。即:在一个程序中,同一个数组只能定义一次。若清除数组内容或重新定义,要使用Erase语句。

格式:

Erase 数组名[,数组名]… …

例子:

Erase A,B,C

1、清除静态数组的影响

数组类型

对元素的影响

数值类型数组

将元素值置0

字符类型数组(变长)

将元素值设为空字符串

字符类型数组(定长)

将元素值置0

变体类型数组

将元素值设为Empty

用户定义类型数组

将元素设为单独的变量

对象数组

将元素值设为Nothing

例子:

Dim A(3) As Integer

Private Sub Command1_Click()

For i = 1 To 3

   A(i) = 12345

   Print A(i)

Next i

End Sub

Private Sub Command2_Click()

Erase A

 For i = 1 To 3

   Print A(i)

Next i

End Sub

2、清除动态数组的影响

(1)系统会删除数组结构,并释放内存空间。

(2)下次引用动态数组前,要用ReDim语句重新进行定义。

三、数组应用算法--数据统计

利用数组进行数据统计运算

例:利用随机函数生成十个100以内的随机整数,计算出这十个数的总和及其平均值,并输出这十个数、总和及其平均值。

问题分析:对象设置把结果使用Print方法直接输出到窗体中,不用设置专用对象。

程序代码:

DimA(10)AsInteger

Dim B As Single

Sub Form_Load()

Form1.Show

Print  " 十个整数为:"

For i=1 To 10             '循环产生10个随机整数

A(I)=Int(Rnd*100)   '生成随机第i个整数

PrintA(I);             '显示第i个数

A(0)=A(0)+A(I)   '累加求和

Next i

Print

B=A(0)/10            '求平均值

Print "总和为:";A(0)

Print "平均值为:";B

End  Sub

大家在学习过程中有不懂之处,可以添加微信号:vbyjk521 ,学习问题在线答疑。

55315188da1c17478095bc48f3053db1.png

7b0c8d35f94cf5b2d3c89012b8a8f1c8.png



769b81634eda449e04a7bd7c322f47eb.gif d3cdf547a83bf4991886cb3e958eff30.png

长按上图,关注跟我学VB公众平台

更多VB知识,尽在跟我学VB

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值