VB考試教程:數組

字號:

三、數組
    1、數組的引出
    數組的基本功能是存儲一系列類型一致的變量,并且可以用相同名字引用這些變量,引用時用數字(索引)來識別它們(如控件數組Label1(Index))。當使用多個類型和功能一致的數據時,使用數組可以縮短和簡化程序。
    數組——用一個名字來代表的按一定順序排列的一組具有相同屬性、類型的數據或變量。
    數組元素——數組中的每個數據或變量稱為數組元素。
    數組名的命名規(guī)則——和變量名的規(guī)則相同。
    例如用戶要記錄一個班級的同學的名字,可以為每一個同學定義一個變量用來記錄他們的名字,例如studentl、student2……。但是這樣做顯然是一種非常笨的方法,因為這些變量的類型都是相同的,并且功能相似,都是用來記錄學生名字的。因此,采用數組的方法就會簡單得多,利用數組只需要定義一個數組變量student(下標),然后利用數組的索引就可以識別數組中的每一個元素。如下圖所示,顯示了用一維數組存儲學生姓名的方法。
    張三 李四 王五 徐六 ……
    student(l) student(2) student(3) student(4) ……
    注意:
    用一個統(tǒng)一的數組名和下標來地確定數組中的元素,更改其中一個元素并不會影響其它元素。
    數組可以聲明為任何基本數據類型的數組,包括用戶自定義類型,數組中的元素可以屬于同一個數據類型。也可以是不同數據類型,當數據類型為Variant時,各個元素能夠包含不同種類的數據(對象、字符串、數值等等)。
    2、數組分類
    按照長度分——可以分成兩種類型的數組:一種是固定大小的數組,這種數組總是保持同樣的大小稱靜態(tài)數組(定長數組),另一種是在運行時大小可以改變的稱動態(tài)數組。
    按照級數分——可以分為一維數組和多維數組。
    前面介紹的數組主要是一維數組,這種數組適用于存放一系列沒有樹型關系的一維數據,如姓名、單據等數據。但如果數據中有層次關系,例如要記錄一個學校所有班級的學生記錄,當然也可以用一維數組來實現,但是這樣就失去了學生所在班級的信息,如果兩個班級中有重名的學生,就更加無法區(qū)分。這時,利用多維數組就可以很方便地解決這一問題。
    我們可以將這樣的數據存儲在一個二維數組中,二維數組有兩個索引,第一個表示行(數組中的班級順序),第二個表示列(班級中的成員)。如下表,顯示了用二維數組存儲班級成員的方法。
    班級1 班級2 班級3 …
    張三 趙偉 孔明 …0
    李四 齊秦 劉備 …1
    王五 王菲 孫權 …2
    朱六 于明 關羽 …3
    …0 …1 …2 …
    例如王菲是第三行、第二列,可表示是為Student(2,1)。
    注意:
    缺省條件下,數組的第一個元素的下標為0。
    在增加數組的維數時,數組所占的存儲空間會大幅度增加,所以要慎用多維數組。使用Variant數組時要更加小心因為他們需要更大的存儲空間。
    3、數組的定義與聲明
    在使用數組之前,一般要聲明數組,當然也可以采用隱式聲明的方法。聲明數組的方法與聲明各種類型的變量一樣,可以用Dim,Private,Public或Static來聲明,只不過聲明數組時需要設置數組的上下界,也就是數組下標索引的起始值和中止值。
    (1)靜態(tài)數組:
    其聲明的語法如下:
     Dim│Private│Public│Static 數組名([下標下界 To]下標上界) [As 數據類型]
    說明:
     數組名后是圓擴弧“( )”擴起來,不能采用其它符號。
     如果不指明數組的下標下界,系統(tǒng)默認為是0,數組的下標上界,使用長整型(Long)數據,在VB中規(guī)定上界不得超過2,147,483,647。
     下標的下界不能大于下標的上界;
     可以用變量名或常數名(以及實數)作為下標邊界,當下標的邊界是常數名時,數組的大小固定(靜態(tài)數組),當下標的邊界是變量名時,數組的大小可作動態(tài)定義(動態(tài)數組)。
    例(見教材P43):
    ★ Dim A(10) As Integer '表示數組名為A,缺省下標界為0,上界為10的有11個整型元素的數組,即:從A(0),A(1)到A(10);
    ★ Dim B(1 To 20) As Integer'表示數組名為B,下標下界為1,下標上界為20的,有20個整型的元素;
    ★ Dim BirthDay (1 To 10) As Date '表示BirthDay是一個索引從1到10的Date型數組。
    ★ Dim DayArray (50)'表示變量是一個有51個索引元素的Variant數組;
    ★ Public Class (10) As String '聲明一個長度為11的全局整型數組Class;
    ★ Dim Matrix(3,4) As Integer '表示變量是一個二維整型數組;
    ★ Dim MyMatrix(1 To 5,4 To 9, 3 To5) As Double '表示變量是一個顯示指定了上下界的三維double數組;
    為數組賦初值可以采用循環(huán)語句。如:
     Dim I As Integer
     For I=0 To 11
     C(I)=I 'C(0)、C(1)、……C(11)
     Next I
    例題:下面的練習使用一個名為Temperatures的一維公用數組來記錄一周七天的日氣溫