VB数组&自定义类型 自定义类型数组

VB数组&自定义类型
━━━━━━━━━━━━━━━━━━━━━━━━━━
知识要点

自定义类型

自定义格式:
Type 数据类型名
数据元素名[(下标)] as 类型 ' 下标的意义与数组的下标差不多,具体请参考数组
……
End type

Dim 变量名 as 数据类型名
数据类型名.数据元素名[(下标)]= 赋值

Dim 变量名(下标) as 数据类型名'定义数组,具体请参考动态数组
---------------------------------------------------------
1.数组的概念

数组:存放具有相同性质的一组数据,也就是数组中的数据必须是同一个类型和性质。
数组元素:数组中的某一个数据项。数组元素的使用同简单变量的使用。

2.静态数组的声明

静态数组:在声明时已确定了数组元素个数。
静态数组有一维数组、二维数组、多维数组。但最多为60维。

①一维数组是指具有一个下标的数组
声明语句: Dim 数组名(下标)[As 类型]
实例:
Dim text(4) As String
text(0)="this"
text(1)="is"
text(2)="text"
VB数组&自定义类型 自定义类型数组
text(3)="!"
实际上就是定义一个含有4个元素的数组text

②二维数组是指具有两个下标的数组
声明语句: Dim 数组名(下标,下标)[As 类型]
实例:
Dim text(2,3) As String '定义具有两行,三列的数组
text(0,0)="a"
text(0,1)="b"
text(0,2)="c"
text(1,0)="d"
text(1,1)="e"
text(1,2)="f"
实际上就是定义一个含有6个元素的数组text,第一个下标称行,第二个称列
即: 01 2
0 ab c
1 de f

③多维数组:即具有多个下标的数组。实际与上面差不多。注意最多只能60维


完整的声明形式:Dim数组名([下标 To]上标[,[下标 To]上标[,…]])As 类型'注意中括号的层次(中括号表示可省略)
实例:
Dim text(1 To 2, 1 To 3) As String
text(1, 1) = "a"
text(1, 2) = "b"
text(1, 3) = "c"
text(2, 1) = "d"
text(2, 2) = "e"
text(2, 3) = "f"
[注意]下标、上标必须为常数,不能为表达式或变量:省略下标,默认为0,也可用Option Base语句重新设置下标的值。

3.动态数组的声明

声明形式:
Dim 数组名()[As 类型]
ReDim [Preserve] 数组名([下标To]上标[,[下标To]上标[,…]])
[注意]此时的上标、下标可以是赋了值的变量或表达式。若有Preserve关键字,表示当改变原有数组最末尾的大小时,使用此关键字可以保持数组中原来的数据。

4.控件数组
相同类型的控件组成的数组。
控件数组的建立:在设计时的窗体上,通过对某控件的复制和粘贴操作:在程序运行时通过Load方法实现。
控件数组元素:由控件的Index属性值表示数组的F标。

5.数组的操作

应掌握的基本操作有:数组初始化、数组输入、数组输出、求数组中的最大(最小)元素及下标、求和、平均值、排序和查找等。

5.3 常见错误和难点分析

1.Dim数组声明

有时用户为了程序的通用性,声明数组的上标用变量来表示,如下程序段:
n=InputBox("输入数组的上标")
Dim a(1 To n)As Integer
程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下标必须是常数,不能是变量。

解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:

Dima()As Integer
n=InputBox ("输入数组的上标")
ReDim a(1 To n)As Integer

2.数组下标越标

引用了不存在的数组元素,即下标比数组声明时的下标范围大或小。例如,要形成有如下30项的斐波那契数列:
1,1,2,3,5,8,13,21,34,…,317811,514229,832040
正确的程序段如下:
Dim a(1 To 30) As Long, i%
若将For i=3To 30改为For i=1 To30,程序运行时会显示"下标越标"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2、i-1均小于下标1。
同样若将上例:a(i)+a(i-2)+a(i-1)语句改为:a(i+2)=a(i)+a(i+1)
程序运行时也会显示"下标越标"的出错信息,这时是数组下标大于上标30。

3.数组维数错

数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:

Dim a(3,5) As Long
For i=1 To 3
For j=1 To 5
a(i)=i*j
Print a(i);"";
Next j
Print
Next i

程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。

4.Aarry函数使用问题

Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。
例如,要将1,2,3,4,5,6,7这些值赋值给数组a,表2.5.1列出了三种错误及相应正确的赋值方法。
表2.5.1 Aarry函数表示方法

错误的Aarry函数赋值 改正的Aarry函数赋值

Dim a(1 To 8)a=Array(1,2,3,4,5,6,7,8) Dim a()a=Array(1,2,3,4,5,6,7)
Dim a AsIntegera=Array(1,2,3,4,5,6,7)Dim aa=Array(1,2,3,4,5,6,7)
Dimaa()=Array(1,2,3,4,5,6,7)Dim aa=Array(1,2,3,4,5,6,7)

5.如何获得数组的上标、下标

Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上标、下标,以保证访问的数组元素在合法的范围内,可使用UBound和LBound函数来决定数组访问。

在上例中,若要打印a数组的各个值,可通过下面程序段实现:

For i=Lbound(A) To Ubound(A)
Print a(i)
Next l

6.给数组赋值

VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:

数组名2=数组名1

我们就此形式作讨论:这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:

Dim数组名2()或Dim数组名2 (下标)

程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。

所以,为了程序的安全、可靠,建议读者还是忍痛割爱,少用VB6.0的这一新功能,使用 传统的循环结构来给数组赋值。基于此原因,我们也就在教程中不作展开。

  

爱华网本文地址 » http://www.413yy.cn/a/25101016/315166.html

更多阅读

如何自定义文件夹图标 win7自定义文件夹图标

如何自定义文件夹图标——简介如何制作个性的文件夹图标,一眼就区别开不同的文件夹。如何自定义文件夹图标——工具/原料png图片转化ico图片软件美图秀秀如何自定义文件夹图标——方法/步骤如何自定义文件夹图标 1、从百度图片里

qq空间怎么免费设置背景 qq空间免费自定义背景

qq空间怎么免费设置背景——简介QQ空间采用模块化的设计理念,为我们自定义QQ版面提供了方便的方法,只需要通常简单的拖动即可设计出唯美的个性化风格空间。下面就与小编一起来学习一下QQ空间背景的设计方法。qq空间怎么免费设置背景

怎样自定义QQ空间开场动画? qq空间开场动画diy

相信大家都想把自己的QQ空间装扮的漂漂亮亮的,那么自定义一个开场动画是分不开的,本文就教大家怎样自定义QQ空间开场动画。首先提醒大家的是:自定义QQ空间开场动画必须是黄钻三级以上。具体制作步骤如下:1、 打开QQ空间2、 点击装扮,

如何设置毕业论文的自定义格式样式及应用格式 毕业论文样式

如何设置毕业论文的自定义格式样式及应用格式——简介毕业论文是对大学学习的一份总结,都希望为自己的大学生活画上完美的句号,提交一份优秀的毕业论文。一份优秀的毕业论文是以规范的格式为前提的,所以在编写论文时,需要先按照学校的规

修改开机画面自定义开机画面 开机画面修改

修改开机画面(自定义开机画面)——简介自定义开机画面。让自己的电脑登录界面看起来更符合自己的要求。修改开机画面(自定义开机画面)——工具/原料logonui.exe修改开机画面(自定义开机画面)——方法 1 软件修改修改开机画面(自定义开机画

声明:《VB数组&自定义类型 自定义类型数组》为网友逐渐迈入成熟分享!如侵犯到您的合法权益请联系我们删除