如何判斷陣列已經初始化

2021-09-02 19:06:04 字數 1809 閱讀 2282

vba程式設計中經常用到陣列,在**中使用陣列之前,需要確保陣列已經完成初始化操作,借助api可以進行判斷。

private declare function safearraygetdim lib "oleaut32.dll" (byref saarray() as any) as long

sub demo()

dim strarray1() as string

dim strarray2() as string

dim strarray3(1 to 3) as string

dim strarray4(1 to 3) as integer

debug.print "strarray1 - " & iif(safearraygetdim(strarray1) > 0, "已初始化", "未初始化")

debug.print "strarray2 - " & iif(safearraygetdim(strarray2) > 0, "已初始化", "未初始化")

debug.print "strarray3 - " & iif(safearraygetdim(strarray3) > 0, "已初始化", "未初始化")

debug.print "strarray4 - " & iif(safearraygetdim(strarray4) > 0, "已初始化", "未初始化")

strarray1 = split("1,2,3", ",")

redim strarray2(1 to 3)

debug.print "***************"

debug.print "strarray1 - " & iif(safearraygetdim(strarray1) > 0, "已初始化", "未初始化")

debug.print "strarray2 - " & iif(safearraygetdim(strarray2) > 0, "已初始化", "未初始化")

end sub

**解析:

執行完dim語句後,四個陣列的狀態是否相同呢?來看一下vbe中【本地視窗】。

dim strarray1() as string宣告的陣列,其型別為string(),「值」為空,這樣的陣列尚未進行初始化無法使用。

strarray3和strarray4則已經完成初始化,根據陣列的資料型別,陣列元素具備相應的初始值,string陣列strarray3初始值為空字元,integer陣列strarray4初始值為0,在**中可以訪問其元素的值或者進行賦值等操作。

除了dim語句之外,第13行和第14行**也可以實現陣列初始化。**執行後,【立即視窗】如下圖所示。

利用api函式safearraygetdim可以判斷陣列是否已經完成初始化,**執行結果如下。

strarray1 - 未初始化

strarray2 - 未初始化

strarray3 - 已初始化

strarray4 - 已初始化

***************

strarray1 - 已初始化

strarray2 - 已初始化

陣列初始化

cpp中陣列初始化方法 簡單的初始化 利用定義變數時賦初值進行初始化。int a 10 float f 10 char ch 5 大括號中的為初始值。較為複雜的初始化 利用memset函式初始化。memset函式用法 void memset void s,int c,size t n 將已開闢記憶體...

陣列初始化

flydream flydream c cat x.cpp include using namespace std int main int argc,char argv flydream flydream c flydream flydream c g g wall x.cpp x.cpp in ...

陣列初始化

一 定義陣列 type arrayname 注 1 陣列定義 c語言宣告 時,不能指定陣列長度。2 定義只是在stack中指定了乙個引用變數,heap中未分配記憶體,所以要在初始化後才能使用。二 陣列初始化 1 靜態初始化 arrayname new type 或 arraynane 注 開發中習慣...