‍数组讲解

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

为了解决大批量的数据处理问题,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 

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 ,学习问题在线答疑。



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

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

variant 字符串数组_VB数组部分核心知识总结相关推荐

  1. python 判断字符串是否为数字_Python核心知识系列:数字与字符串类型

    ​学习任何一种编程语言时首先要对它的数据类型有所了解,从本篇开始会对 Python 中的常见数据类型的基本概念和操作进行介绍. Python中有6种标准的数据类型:数字(Number).字符串(Str ...

  2. 【java json基础】字符串转json json转字符串 json数组转换 【java基础知识】【实用】【一看就会】

    原文:[java json基础]字符串转json json转字符串 json数组转换 [java基础知识][实用][一看就会] 读书就是:从薄读厚,再从厚读薄的过程. 文比较长,各讲述如下: 若是新手 ...

  3. C++使用VARIANT实现二维数组的操作、怎么使用COleSafeArray实现二维数组将字符串写入excel

    配合OLED_V2的excel操作 C++使用VARIANT实现二维数组的操作 VARIANT变量是COM组件之间互相通信的重要的参数变量之一,它可以容纳多种不同的类型,如short.long.dou ...

  4. c语言字符串二维数组的动态分配应,C语言中动态分配二维数组复习过程.doc

    C语言中动态分配二维数组复习过程.doc C语言中动态分配二维数组在C中动态分配内存的,对于单个变量,字符串,一维数组等,都是很容易的.C中动态分配二维数组的方法,很少有C语言书中描述,我查找了有的C ...

  5. 学习-Java字符串之字符串、字符数组与字节数组间的使用之单词重新排序

    任务描述 本关任务:对给定单词重新排序(按照组成单词的字母升序排序). 相关知识 之前我们学习了字符串和数组,下面我们来了解一下字符串.字符数组.字节数组相互间的转换. 字符串转字符数组 使用字符串 ...

  6. php把字符串变为数组_php怎么把字符串转换成数组?

    php怎么把字符串转换成数组?下面本篇文章给大家介绍一下PHP把字符串转换成数组的方法.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. PHP中,将一个字符串转成数组,是使用非常频繁 ...

  7. MATLAB GUI设计II 多功能模式题目生成器 四则运算 | 界面切换 | 字符串处理 | cell数组 | GUI

    前言 让我先吐槽一下 _(:△」∠) _ 这个可以用来整人的程序花费了我整整一天多的时间 全内容整整800行代码 生成的pdf说明报告长达26P 总体来说 这个GUI可以实现较多的复杂功能 整体结构我 ...

  8. JavaScript中的Date日期、String字符串、Array数组、Math提供对数据的数学计算

    一.Date 日期对象 日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 定义一个时间对象 : var Udate=new Date(); 注意:使用关键字new,Date() ...

  9. php数组及解析,PHP基本知识(数组解析)

    PHP基本知识(数组解析) 知识点: 回顾: 1 字符串函数: strlen(); 返回字符串长度 strpos(); 返回字符在字符串中第一次出现的位置. substr(); 返回 截取 字符串 s ...

最新文章

  1. 优秀程序员都会关注的公众号
  2. PM Basic Skill---Communicate Plan
  3. CentOS中使用Docker安装SqlServer以及遇到的那些坑
  4. c++ fstream用法
  5. Jerry本地安装SAP Kyma的一些失败尝试
  6. 基础知识—表达式与语句-语句
  7. 为了云计算的安全需要自己控制加密密钥
  8. java无法启动安装程序,Windows Fix中无法启动Java更新安装程序错误
  9. NGINX 结合 lua 动态修改upstream
  10. java cas单点登录_JAVA - 登录 单点登录 cas
  11. IDEA 修改主题颜色
  12. word去掉多余空格,换行符
  13. 渲染书籍目录汇总(不断更新中...)
  14. 媒体访谈| 知道创宇邓金城: DDoS攻势愈烈,抗D服务需不断优化
  15. 描述计算机内存的参数,电脑组装内存知识,你不能不知的内存参数介绍
  16. 123茶楼,众筹...
  17. 西北大学本科毕业论文答辩PPT模板
  18. acrobat PDF删除部分_PDF编辑器Adobe Acrobat DC 2019
  19. MySQL远程访问权限的设置
  20. Linux学习笔记_5_文件目录类指令日期,时间

热门文章

  1. 在 Linux 命令行里与其他用户通信
  2. 月薪30K+的程序员都会啥,通过3000字告诉你……
  3. 讲解 Redis 的一篇深度好文!
  4. 作为程序员的你第一套房子是多少岁?多少万?
  5. 探索JAVA并发 - 悲观锁和乐观锁
  6. 缓存穿透、并发和雪崩那些事
  7. 智办事2.0APP全新发布,不可错过的3个亮点!
  8. ubuntu下pytorch
  9. ARM-Linux与嵌入式开发
  10. C++赋值运算符与赋值表达式