程序设计与实践(VB.NET)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

二、数组的声明和初始化

和普通变量一样,在使用前要对数组声明。

1.静态数组的声明

静态数组是指在声明时指定数组名称,确定数组的大小,在使用时,不会改变其大小的数组。在程序编译时,按照指定的数组大小分配内存空间。

静态数组又可分为一维数组、二维数组和多维数组(本书中不讨论多维数组)。其语法格式为

Dim数组名(第一维下标上界[,第二维下标上界,…])[ As数据类型]

其中

(1)数组名后面加上一对圆括号。

(2)数组名可以是任何合法的Visual Basic.NET变量名。

(3)数组元素下标上界的个数表示数组的维数,当只有一个时,表示一维数组,最多可以声明32维数组。

(4)数组的每个维数的最大长度为Integer数据类型的最大值减1,即每个维数的最大长度为231 -1。但是,数组的总的大小受系统可用内存的限制。数组的大小(即数组元素的个数)为:上界 - 下界+1。

(5)数组元素下标下界为0,不能改变;下标上界只能用常数表达式定义。

(6)数组的数据类型可以是基本数据类型,也可以是Object类型。如果省略“As数据类型”选项,则默认为Object类型。例如

    Dim A(3)   As Integer      '一维数组,从A(0)到A(3),4个元素
    Dim B(2,3) As Decimal      '二维数组,从B(0,0)到B(2,3),12个元素
    Dim C(2+3) As String       '一维数组,从C(0)到C(5),6个元素
    Dim D(x)   As String       '出错,下标上界不是常数

在上面的例子中,声明String类型一维数组D时,用表达式“x”声明它的下标上界,x不是常数,因此是非法的,编译时将出错。

数组元素在存储器中是连续存放的。对于一维数组,按照数组元素的下标从小到大依次存放。例如

Dim A(5)As Integer

定义了一个一维整型数组A,数组有6个元素,下标范围为0~5,其元素分别为

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

A数组在内存中的存放顺序如下图所示。

对于二维数组,则按照先行后列的顺序,依次存放。例如

Dim B(2,2)As Integer

定义了一个二维整型数组B,B数组有9个元素,分别为

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

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

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

B数组在内存中的存放顺序如下图所示。

假设A班有30人,使用整数数组来存放学生的英语成绩,则定义数组为

score(0)~score(29)代表A班1~30号学生的英语成绩。

Dim score(29)As Integer

假设1年级有A、B两班各30人,使用整数数组来存英语成绩,则定义数组为

Dim score(1,29)As Integer

其中,score(0,13)代表A班14号学生的英语成绩。一般而言,一维数组处理标量(向量)数据,二维数组处理类似队列的数据。在实际应用中,二维数组的应用更广泛。

2.数组的初始化

在使用数组时,通常要求数组元素要有初始值。Visual Basic.NET允许在声明数组时指定各数组元素的初始值,称数组的初始化。

(1)一维数组的初始化

格式为

Dim数组名()[As数据类型]={值1,值2,……,值n}

在Visual Basic.NET中不允许对指定了上界的数组进行初始化,所以,数组名后面的括号必须为空。系统将根据初始值的个数确定数组的上界。还可以用New子句为数组进行初始化:

Dim数组名()[As数据类型] = New数据类型(){值1,值2,……,值n}

例如

Dim A()As Integer = {2,4,6,8}

Dim A()As Integer = New Integer(){2,4,6,8}

本例定义了一个Integer类型的一维数组A,该数组有4个初始值。因而数组的上界为3。经过初始化以后,数组各元素的值分别为

A(0)= 2 A(1)= 4 A(2)= 6 A(3)= 8

类似地,也可以对字符数组进行初始化。例如

Dim A()As String = {"姓名","语文","数学","英语"}

本例定义了一个String类型的一维数组A,该数组有4个初始值,数组的上界为3。经过初始化以后,数组的各元素的值分别为

A(0)= "姓名" A(1)= "语文" A(2)= "数学" A(3)= "英语"

(2)二维数组的初始化

二维数组的初始化相对要复杂一些,其语法格式为

Dim数组名(,)[As数据类型]={{第1行值},{第2行值},……,{第n行值} }

其中

(1)由于是二维数组,所以数组名后面的括号内必须有一个逗号。

(2)内层花括号的个数确定了二维数组的行数,其中值的个数决定了二维数组的列数。

例如

Dim B(,)As Integer = {{1,3,5,7},{2,6,10,14},{3,9,15,21} }

Dim Scores(,)As Short = New Short(1,1){{10,10},{10,10}}

本例定义了一个Integer类型的二维数组B,该数组有3行4列。经过初始化以后,有12个初始值,数组的各元素的值分别为

B(0,0)= 1,B(0,1)= 3,B(0,2)= 5,B(0,3)= 7

B(1,0)= 2,B(1,1)= 6,B(1,2)= 10,B(1,3)= 14

B(2,0)= 3,B(2,1)= 9,B(2,2)= 15,B(2,3)= 21