本文提到的數組是Visual Basic中數組的定義,對asp編程有一定的參考價值,感興趣的小伙伴們可以參考一下
數組是有序數據的集合。數組中的元素可以不屬於同一個數據類型。用一個統一的數組名和下標來唯一地確定數組中的元素,更改其中一個元素並不會影響其它元素。數組的下標是有界的,分為下界和上界。數組可以用Dim、Private、Public或Static來聲明,它們的語法格式相同。下面只介紹用Dim聲明數組的方法。
1.數組的定義與聲明
數組的定義語法如下:
Dim 數組名( [[下標下界To ] 下標上界] ) [As 數據類型]
例如(假設在當前模塊中數組的缺省下界為0)):
① Dim A(10) As Integer
表示數組名為A,此數組下標下界為缺省值0,下標上界為10,有11個Integer類型的元素,從A(0)、A(1)到A(10)。
② Dim B(1 To 20) As Integer
表示數組名為B,此數組下標下界為1,下標上界為20,有20個Integer類型的元素,從B(1)到B(20)。
③Dim DayArray(50)
表示DayArray 是一個有51 個索引(從0 到50)元素的Variant 數組。
④Dim Matrix(3, 4) As Integer
表示Matrix 是一個二維Integer 數組。
⑤Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double
表示MyMatrix 是一個顯式指定了上下界的三維double 數組。
⑥Dim BirthDay(1 To 10) As Date
表示BirthDay 是一個索引從1 到10 的Date型數組。
2. Option Base 語句
Option Base 語句在模塊級別中使用,用來聲明數組下標的缺省下界。
Option Base 語句的語法如下:
Option Base {0 | 1}
說明:缺省狀態下數組下界為0,此時無需使用Option Base 語句。如果使用該語句規定數組下界1,則必須在模塊的數組聲明之前使用Option Base 語句。
注意:
(1)Dim、Private、Public、ReDim 以及Static 語句中的To 子句提供了一種更靈活的方式來控制數組的下標。不過,如果沒有使用To 子句顯式地指定下界,則可以使用Option Base 將缺省下界設為1。使用Array 函數創建的數組的下界也受Option Base 語句指定的下界的決定, 除非Array 是由類型庫(例如VBA.Array )名稱限定,如果是由類型庫名稱限定,則使用Array 函數創建的數組的下界不受Option Base 的影響。
(2) Option Base 語句只影響位於包含該語句的模塊中的數組下界。
關於數組聲明的幾點說明:
①數組名命名規則和變量名的相同。
②數組名後是用圓括弧括起來的,不能用方括弧,不同於C語言。
③下標的下界必須不能大於其上界。
④可以用變量名或常數名(以及實數)作下標的邊界。當下標的邊界是常數名時,數組的大小固定,當下標的邊界是變量名時,數組的大小可作動態定義,即數組的大小取決於程序運行過程中變量的值。因此,VB 中數組又可以分為兩種數組:靜態數組、動態數組。
3.靜態數組
靜態數組是指數組元素的個數是固定不變的,即它們佔用的內存空間大小是固定不變的。根據固定大小數組的維數不同,可以將它分為一維數組和多維數組。
聲明多維數組的語法格式為:
Dim 數組名([下標邊界列表]) [As 數據類型]
下標邊界的定義形式:[下標下界To]下標上界
下標邊界列表指用逗號分開的數組各維的下標邊界,即
[下標下界To]下標上界,[下標下界To]下標上界,……,[下標下界To]下標上界
(第一維) (第二維) (第n維)
當n=1時,數組稱作一維數組;當n=2時,數組稱作二維數組;依次類推,當n=m時,數組稱作m維數組。
下面舉例介紹一維數組的使用。
'聲明一個長度為51的字符串數組FriendsName
Dim FriendsName(50) As String
'聲明一個長度為11的全局整型數組Class
Public Class(10) As Integer
一維數組中的元素個數為(上界-下界+1)。
為數組賦初值可以採用循環語句,如:
Dim I As Integer
For I = 0 To 11 '循環語句的使用程序流程的控制
C(I) = I
Next I
如果不顯式指定下標下界,則數組的下標下界由Option Base 語句控制。如果沒有Option Base 語句則下界為默認為0。
數組的維數並不限於2,在VB中,可以擴大至於60,在實際應用上對三維以上的數組的應用是不多的。定義一個多維數組時只需一條Dim語句指定數組的所有下標邊界即可,使用多維數組的可以很方便的表示一些有意義的統計數據。例如:
Dim Profit(16,10,12) As Currency
這個Profit數組可用來表示以店名、部門及月份為參數的某百貨公司的利潤。如:Profit(2,8,11)代表了第二分店的第八部門在11月份的利潤。
4.動態數組
有時在數組開始使用前,不能知道需要多大的數組才能滿足實際需要。當然可以把數組的大小定義到足夠大來滿足任意的實際應用需要,這種方法效率很低(大量浪費內存空間)。如果使用動態數組,就可以在程序運行時根據實際需要,精確定義數組的大小。
在聲明數組時,不給出維數列表就是將數組聲明為動態數組。例如:
Dim MyArry() As Integer
在使用動態數組前,必須使用ReDim語句把它重新定義。如前面聲明的數組MyArry,可以用以下語句將它定義為一個動態二維數組。
ReDim MyArry(10,10)
還可以通過重複執行ReDim語句,多次定義動態數組。使用ReDim最多能定義數組的維數是60。 ReDim語句可以改變數組每維的元素個數,但不能改變維數。下面是對ReDim語句的一個標準應用舉例。
Dim MyArry() As Single '聲明動態數組
ReDim MyArry(30,20,10) '重新定義數組
ReDim MyArry(50,23,21) '再次重新定義數組
ReDim的語法與Dim的相同,此外,它還有選擇項Preserve關鍵詞:
ReDim Preserve 數組名([ [下標下界To]下標上界]) [As 數據類型]
例如:
?
- ReDimMyArry(50,23,21)
- ReDimPreserveMyArry(50,23,50)