對于數(shù)組(原創(chuàng))
發(fā)表時間:2024-05-28 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]A 定義數(shù)組有兩種方式:DIM和REDIM。DIM定義的是固定個數(shù)、數(shù)據(jù)類型的數(shù)組;而REDIM則不同,它可以定義不同類型的數(shù)據(jù),也可以定義個數(shù)并非固定的數(shù)據(jù)。比較下面幾個例子。 都合法的例子:Dim myarray(5,2) Redim myarray(5,2)前者錯誤而后者合法的例子:n=10...
A 定義數(shù)組
有兩種方式:DIM和REDIM。
DIM定義的是固定個數(shù)、數(shù)據(jù)類型的數(shù)組;而REDIM則不同,它可以定義不同類型的數(shù)據(jù),也可以定義個數(shù)并非固定的數(shù)據(jù)。比較下面幾個例子。 都合法的例子:
Dim myarray(5,2)
Redim myarray(5,2)
前者錯誤而后者合法的例子:
n=10 n=10
Dim myarray(n)
Redim myarray(n,2)
另外REDIM還可以定義未定類型的數(shù)組,如:Redim myarray(10)
B 數(shù)組個數(shù)
在以DIM或REDIM定義數(shù)組時指定的下標,表示的是訪問該數(shù)組時所容許的最大下標,卻不是該數(shù)組的個數(shù)。實際上,一維數(shù)組個數(shù)總是等于(最大下標+1),訪問時是通過下標從0開始逐個訪問的。
比如:Dim myarray(5) 定義的數(shù)組元素有6個,分別是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。
再如:Redim thisarray(2,5)實際上定義了一個(2+1)*(5+1)=1 8的二維數(shù)組。
既然如此,那么,可不可義定義一個只有一個元素的數(shù)組呢?答案是:不可以。
如前所說,Redim thisarray(1)定義的數(shù)組實際上有(1+1)個數(shù)組元素,但類似于: Redim thisarray(0)的語法,錯誤的。所以,不能定義一個只有一個數(shù)組元素的數(shù)組。 其實,以上說的只是其默認狀況。其實,定義數(shù)組可以通過定義下標的起止從而達到定義數(shù)組的個數(shù)甚至下標的起止編號的。比如:Redim thisarray(1980 to1990)就 定義了一個含有11個元素的數(shù)組,下標從1980到1990。
C 關(guān)于UBOUND函數(shù)
UBOUND返回的是一維數(shù)組的最大下標,而不是元素個數(shù)。 比如:Dim Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 UBOUND也可以應(yīng)用于二維數(shù)組。應(yīng)用于二維數(shù)組時,它返回的是第一個下標的最大值。
比如:Dim Myarray(6,3),
那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。
若要返回第二個下標的最大值,則使用:UBOUND(Myarray,2)。
與UBOUND相對應(yīng)的是另外一個函數(shù):LBOUND,它返回數(shù)組的最小下標。與UBOUND類似,LBOUND(Myarray,2)則返回數(shù)組MYARRAY的第二個下標的最小值。所以,準確地說,一維數(shù)組Myarray的元素個數(shù)為:UBOUND(Myarray)-LBOUND(Myarray)+1,而二維數(shù)組的元素個數(shù)則為:
(UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1)
多維數(shù)組依此類推。
呵呵,希望加入精華。