vb如何定義未知大小一維陣列,vb 如何定義乙個未知大小一維陣列?

時間 2022-04-25 04:01:27

1樓:匿名使用者

動態陣列陣列到底應該有多大才合適,有時可能不得而知。所以希望能夠在執行時具有改變陣列大小的能力。

動態陣列就可以在任何時候改變大小。在 visual basic 中,動態陣列最靈活、最方便,有助於有效管理記憶體。例如,可短時間使用乙個大陣列,然後,在不使用這個陣列時,將記憶體空間釋放給系統。

如果不用動態陣列,就要宣告乙個陣列,它的大小盡可能達到最大,然後再抹去那些不必要的元素。但是,如果過度使用這種方法,會導致記憶體的操作環境變慢。

要建立動態陣列,請按照以下步驟執行:

(如果希望陣列為公用陣列,則)用 public 語句宣告陣列,或者,(如果希望陣列為模組級,則)在模組級用 dim 語句宣告陣列,或者(如果希望陣列為區域性陣列,則)在過程中用 static 或 dim 語句宣告陣列。給陣列附以乙個空維數表,這樣就將陣列宣告為動態陣列。 dim dynarray ()

用 redim 語句分配實際的元素個數。

redim dynarray (x + 1)

redim 語句只能出現在過程中。與 dim 語句、static 語句不同,redim 語句是乙個可執行語句,由於這一語句,應用程式在執行時執行乙個操作。

redim 語句支援這樣的語法,它與固定陣列中使用的語法相同。對於每一維數,每個 redim 語句都能改變元素數目以及上下界。但是,陣列的維數不能改變。

redim dynarray (4 to 12)

例如,用第一次宣告在模組級所建立的動態陣列 matrix1:

dim matrix1 () as integer

然後,在過程中給陣列分配空間:

sub calcvaluesnow ()..

.redim matrix1 (19, 29)

end sub

這裡的 redim 語句給 matrix 分配乙個 20 × 30 的整數矩陣(元素總大小為 600)。還有乙個辦法,用變數設定動態陣列的邊界:

redim matrix1 (x, y)

注意 您可以將字串賦值給大小可變的位元組陣列。乙個位元組陣列也可以被賦值給乙個可變長的字串。一定要注意字串中的位元組數會隨平台而變化。

同乙個字串在 unicode 平台上的位元組數是它在非 unicode 平台上的兩倍。

保留動態陣列的內容每次執行 redim 語句時,當前儲存在陣列中的值都會全部丟失。visual basi 重新將陣列元素的值置為 empty(對 variant 陣列)、置為 0(對 numeric 陣列)、置為 零長度字串(對 string 陣列)或者置為 nothing(對於物件的陣列)。

在為新資料準備陣列,或者要縮減陣列大小以節省記憶體時,這樣做是非常有用的。有時希望改變陣列大小又不丟失陣列中的資料。使用具有 preserve 關鍵字的 redim 語句就可做到這點。

例如,使用 ubound 函式引用上界,使陣列擴大、增加乙個元素,而現有元素的值並未丟失:

redim preserve dynarray (ubound (dynarray) + 1)

在用 preserve 關鍵字時,只能改變多維陣列中最後一維的上界;如果改變了其它維或最後一維的下界,那麼執行時就會出錯。所以可這樣程式設計:

redim preserve matrix (10, ubound (matrix, 2) + 1)

而不可這樣程式設計:

redim preserve matrix (ubound (matrix, 1) + 1, 10)

詳細資訊 關於動態陣列的更詳細資訊,請參閱語言參考中的「redim 函式」。關於物件陣列,請參閱「用物件程式設計」。

2樓:匿名使用者

可以的,先定義乙個動態陣列:dim a() as string到使用的地方,再重定義上下限:

n=15

redim a(1 to n) ',當然,n 在重定義前就要確定如果a中放了資料了,還要增加上限,還可以用 redim preserve 語句來擴充陣列:

a(15)=15

redim preserve a(ubound(a) + 10) '只增加上限,不改變元素值

3樓:匿名使用者

dim a() as string

括號內不用寫數,系統就預設為一維陣列,如果串列埠通訊時,不知傳送多少位元組,直接寫陣列名就可以,如果在某處知道大小,可以使用redim a(0 to x) as string就可以了。

4樓:彩虹飲料

dim arr() as integer

dim size as integer

size=5

redim arr(1 to size)

也就是一開始只是宣告乙個變數,等到「知道」或者"應該知道"的時候用redim重新定義其大小,這個例子中用了乙個變數size,size可以根據實際情況設定,比如班級人數存在student變數中,就讓size=sutdent,然後陣列大小就確定了

matlab 如何定義乙個未知大小的陣列?

5樓:匿名使用者

arr = ;

arr(1) = 1;

arr(2) = 2;

……arr(10) = 10;

…… 這樣就行,和c不一樣,不需要手動開闢空間。。。

如何定義未知大小的陣列

6樓:笑喘是病得抽

除常量陣列外,陣列必須是定長的,如果不知道長度,有幾種辦法,固定分配乙個認為不會出現的維度值,或者對陣列進行動態分配,如:12

3456

78910

1112

1314

1516

17int *parray,ncount;

int insert(int * parray,int ncount,int nelement)

main()

vb子程式或函式未定義,vb子程式或函式未定義

原因 vb將你的陣列o預設為有乙個sub 過程 或者function 函式 的名字就做o,你的陣列下標被認為是向過程或函式傳輸的引數。然後在你的 裡vb沒有找到名稱叫做o的過程或函式。所以給出這個錯誤的提示。解決方法 你要做的是告訴vbo是乙個陣列,也就是宣告陣列。宣告陣列應該根據陣列的作用範圍來決...

vb如何定義子程式,vb怎麼 定義子程式或函式?

不知 如何定義子程式 是指哪個層面的。如果是指子程式定義的語法結構,則要講明白需要較多的文字,所以建議找一本教科書看看。如果是指在 視窗建立子程式,則有兩種方法 1 直接輸入,操作步驟是 開啟 編輯視窗 置插入點於任何已經存在的過程之外 輸入子程式的 2 使用 新增過程 對話方塊,操作步驟是 開啟 ...

vb陣列定義與賦值,vb怎麼定義字串陣列?怎麼賦值?

dim cnt1 as variant cnt1 array 1600,0,0,0,0 array 函式 返回乙個包含陣列的 variant。語法array arglist 所需的 arglist 引數是乙個用逗號隔開的值表,這些值用於給 variant 所包含的陣列的各元素賦值。如果不提供引數,則...

vb如何定義m行n列的二維陣列,vb如何定義乙個m行n列的二維陣列

要看具體設定 option base 在模組級別中使用,用來宣告陣列下標的預設下界option base後面只能是0或者1 由於預設是0 所以是0的時候可以不用option base語句只有當你想option base 語句來取代陣列下標的預設值 0時才有必要用option base 1而且只能是o...

vb中陣列的定義是什麼,VB中陣列的定義是什麼

dim a 10 as integer dim b 3 to 5 as string 3 宣告了b是陣列名 字串型 一維陣列 有9個元素,下標的範圍是 3 5,每個元素最多存放3個字 dim c 1 to 5,4 as long 宣告了c是陣列名 長整型 二維陣列 第一維下標範圍為 1 5,第二維下...