但如果事前不知道陣列大小時,怎麼辦呢?在事前不知道陣列的大小時,可以宣告陣列為動態陣列,在需要指定陣列大小時,再使用redim語句分配陣列的實際元素的個數。
1、動態陣列是可以改變大小的陣列,通過在陣列名稱後附帶空括號來宣告,如:
dim arrsheetname() as string
2、在定義動態陣列之後,必須使用redim來設定動態陣列的上界和下界,為陣列重新分配儲存空間。
3、我們可以使用redim語句反覆地改變陣列的元素個數。
下面我們將通過乙個例項來講解動態陣列的利用:
比如乙個工作表的c列儲存了學生姓名,現在我們需要把把有姓"王"的學生儲存在陣列arr中,預先我們並不知道c列姓王的學生有三十個還是五十個,所以,我們在定義時**可以這樣:
**:sub mynzsz_2()
dim arr() as string
erow = [c65536].end(3).row '最後乙個非空單元格行號
j = 1 '陣列索引號
redim arr(1 to xcount) '重新定義陣列大小,元素共有xcount個
for i = 1 to erow
if left(cells(i, 3).value, 1) = "王" then
arr(j) = cells(i, 3).value '給陣列元素賦值
j = j + 1 '索引號加1
end if
next i
[d1:d65536].clear '清除原有資料
end sub
**截圖:
**的解讀:
1 dim arr() as string 定義了乙個動態陣列。
redim arr(1 to xcount) '重新定義陣列大小,元素共有xcount個
通過求出姓王的學生的個數從而知道陣列的上下界
執行結果:
今日內容回向;
1 什麼是動態陣列?
2 動態陣列和靜態陣列有什麼區別?
在乙個陣列中實現兩個堆疊
初學者難題 1.如何建立這樣的乙個陣列?2.怎樣判斷棧的空滿?include include define error 1e8 typedef int elementtype typedef enum operation typedef enum bool typedef int position ...
在乙個二維陣列中查詢乙個數
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。int juge int matrix,int xlen,int ylen,int key xlen 表示列的數,ylen表示行數 i...
在乙個陣列中找出top K的數
這個基本都是老生常談了,看資料量有多大,建乙個小根堆,或者用快速排序的方法來完成這個題。下面給出快速排序的方法,直接上 了。include include include void quicksort int arr,int low,int high arr i val quicksort arr,...