学学习网 手机版

学学习网

学习路径: 学习首页 > 应用开发 > vb >

第五节 数组的概念

设置字体:
----------------------------------
1.引例
  求100个学生的平均成绩及超过平均成绩的人数。
  如果用一般变量来表示成绩,需要用100个变量,如:mark1、mary2、……mark100。若用数组,可以只用一个来表示mark(1 To 100)。
  2.基本概念
  数组:是同类型变量的一个有序的集合。
  如:A(1 To 100),表示一个包含100个数组元素的名为A的数组。
  数组元素: 即数组中的变量。用下标表示数组中的各个元素。
  表示方法:数组名(P1,P2,……)
  其中P1、P2表示元素在数组中的排列位置,称为“下标”。
  如:A(3,2)代表二维数组A中第3行第2列上的那个元素。
  数组维数:  由数组元素中下标的个数决定,一个下标表示一维数组,二个下标表示二维数组。
  VB中有一维数组、二维数组、……最多60维数组。
  下标: 下标表示顺序号,每个数组有一个唯一的顺序号,下标不能超过数组声明时的上、下界范围。下标可以是整型的常数、变量、表达式,甚至又是一个数组元素。
  下标的取值范围是:下界 To 上界 ,缺省下界时,系统默认取0。
  3.数组声明
    数组必须先声明后使用。声明数组就是让系统在内存中分配一个连续的区域,用来存储数组元素。
    声明内容:数组名、类型、维数、数组大小。
  一般情况下,数组中各元素类型必须相同,但若数组为Variant时,可包含不同类型的数据。
    静态数组:声明时确定了大小的数组。
    动态数组: 声明时没有给定数组大小(省略了括号中的下标),使用时需要用ReDim语句重新指出其大小。
  使用动态数组的优点是根据用户需要,有效地利用存储空间,它是在程序执行到ReDim语句时才分配存储单元,而静态数组是在程序编译时分配存储单元。
  5.3动态数组及声明
1. 动态数组的建立与声明
  建立动态数组的方法是:利用Dim、Private、Public语句声明括号内为空的数组,然后在过程中用ReDim语句指明该数组的大小。语法是:

  ReDim  数组名(下标1[,下标2…]) [As  类型]

  其中下标可以是常量,也可以是有了确定值的变量,类型可以省略,若不省略,必须与Dim中的声明语句保持一致。
  例: Dim D() As Single
     Sub Form_Load()
     ……
     ReDim D(4,6)
     ……
     End Sub
  2.注意事项
  (1)在动态数组ReDim语句中的下标可以是常量,也可以是有了确定值的变量。

  (2)在过程中可以多次使用ReDim来改变数组的大小,也可改变数组的维数。

  (3)每次使用ReDim语句都会使原来数组中的值丢失,可以在ReDim语句后加Preserve参数来保留数组中的数据,但使用Preserve只能改变最后一维的大小,前面几维大小不能改变。
  1. 给数组元素赋初值
  (1) 利用循环结构
  例:Dim  iA(1 To 10) As Integer
    For i=1 To 10
    A(i)=0
    Next i
  (2) 利用Array函数
  例:Dim  a As Variant, b As Variant, i%
    a = Array (1,2,3,4,5)
    b = Array ("abc","def","67")
    For i=0 To Ubound (a)
    Picture1.print a(i);"";
    Next i
    For i=0 To Ubound (b)
    Picture1.print b(i);"";
    Next i
  2.数组的输入
  (1) 通过InputBox函数输入适合输入少量数据。
  例:Dim  sB(3,4) As singer
    For i=0 To 3
    For j=0 To 4
    SB(i,j) =InputBox("输入" & i & j & "的值")
    Next j
    Next i
  (2) 通过文本框控件输入
  对大批量的数据输入,采用文本框和函数split()\join()进行处理,效率更高。

  3.数组的赋值
  在VB6.0中可以直接将一个数组的值赋值给另一个数组:
   Dim a(3) as integer, b() as integer
   A(0)=2: A(1)=5: A(2)=-2: A(3)=2
   b=a
  在早期的VB中,这需要用循环语句才可以实现:
   ReDim b(UBound(a))
   For I=0 to UBound(a)
     b(I)=a(I)
----------------------------------
课程列表
重点难点
赞助链接