引用:
關鍵點:dim str() as string '定義
redim str(n) '重設長度
or redim preserve str(n) '重設長度,並保持原來記錄不變
詳細闡述:
redim 語句
在過程級別中使用,用於為動態陣列變數重新分配儲存空間。
語法 redim [preserve] varname(subscripts) [as type] [, varname(subscripts) [as type]] . . .
redim 語句的語法包括以下幾個部分:
部分 描述
preserve 可選的。關鍵字,當改變原有陣列最末維的大小時,使用此關鍵字可以保持陣列中原來的資料。
varname 必需的。變數的名稱;遵循標準的變數命名約定。
subscripts 必需的。陣列變數的維數;最多可以定義 60 維的多維陣列。subscripts 引數使用下面的語法:
[lower to] upper [,[lower to] upper] . . .
如果不顯式指定 lower,則陣列的下界由 option base 語句控制。如果沒有 option base 語句則下界為 0。
type 可選的。變數的資料型別;可以是 byte、boolean、integer、long、currency、single、double、decimal(目前尚不支援)、date、string(對變長的字串)、string * length(對定長的字串)、object、variant、使用者定義型別或物件型別。所宣告的每個變數都要有乙個單獨的 as type 子句。對於包含陣列的 variant 而言,type 描述的是該陣列的每個元素的型別,不能將此 variant 改為其它型別。
說明 redim 語句用來定義或重定義原來已經用帶空圓括號(沒有維數下標)的 private、public 或 dim 語句宣告過的動態陣列的大小。
可以使用 redim 語句反覆地改變陣列的元素以及維數的數目,但是不能在將乙個陣列定義為某種資料型別之後,再使用 redim 將該陣列改為其它資料型別,除非是 variant 所包含的陣列。如果該陣列確實是包含在某個 variant 中,且沒有使用 preserve 關鍵字,則可以使用 as type 子句來改變其元素的型別,但在使用了此關鍵字的情況下,是不允許改變任何資料型別的。
如果使用了 preserve 關鍵字,就只能重定義陣列最末維的大小,且根本不能改變維數的數目。例如,如果陣列就是一維的,則可以重定義該維的大小,因為它是最末維,也是僅有的一維。不過,如果陣列是二維或更多維時,則只有改變其最末維才能同時仍保留陣列中的內容。下面的示例介紹了如何在為已有的動態陣列增加其最末維大小的同時而不清除其中所含的任何資料。
redim x(10, 10, 10)
. . .
redim preserve x(10, 10, 15)
同樣地,在使用 preserve 時,只能通過改變上界來改變陣列的大小;改變下界則會導致錯誤。
如果將陣列改小,則被刪除的元素中的資料就會丟失。如果按位址將陣列傳遞給某個過程,那麼不要在該過程內重定義該陣列的各維的大小。
在初始化變數時,數值變數被初始化為 0,變長的字串被初始化為乙個零長度的字串 ( " "),而定長的字串則用 0 填充。variant 變數被初始化為 empty。使用者自定義型別的變數的每個元素作為各自獨立的變數進行初始化。在使用引用物件的變數之前,必須使用 set 語句將乙個已有的物件賦給該變數。在被賦值之前,所宣告的物件變數有乙個特定值 nothing,這個值表示該變數沒有指向任何物件的例項。
小心 如果 redim 語句所使用的變數在模組級別或過程級別不存在,則該語句就相當於乙個宣告語句。如果此後在乙個更廣的範圍內又建立了同名的變數,即使使用了 option explicit,redim 也將使用後宣告的這個變數,且不會導致編譯錯誤。為了避免這種衝突,就不應把 redim 作為宣告語句使用,而只應作為重定義陣列大小的語句。
注意 要改變 variant 所包含的陣列的大小,必須在試圖改變其陣列大小之前顯式宣告該 variant 變數。
可變長陣列 柔性陣列結構體成員 可變長結構體
可變長陣列是c99相較c89新增的乙個特性。1.可變長陣列無鏈結性,即只在 塊內作用 函式體內或者區域性 塊內 2.可變長陣列不可初始化。3.陣列長度在生存週期不可更改。即n的值不影響str的長度。4.可變長陣列作為函式形參的時候,中使用 其本質是指標。形參中的陣列還可以使用型別限定詞const v...
可變長引數
由於在c語言中沒有函式過載,解決不定數目函式引數問題變得比較麻煩,即使採用c 如果引數個數不能確定,也很難採用函式過載。對這種情況,提出了指標引數來解決問題。如printf 函式,其原型為 int printf const char format,它除了有乙個引數format固定以外,後面跟的引數的...
可變長引數
可變長引數 指的是在呼叫函式時,傳入的引數個數可以不固定 呼叫函式時,傳值的方式無非兩種,一種是位置實參,另一種是關鍵字實參,因此形參也必須得有兩種解決方法,以此來分別接收溢位的位置實參 與關鍵字實參 形參中的會將溢位的位置實參全部接收,然後儲存元組的形式,然後把元組賦值給後的引數。需要注意的是 後...