解析C 陣列

2021-05-22 03:02:40 字數 2464 閱讀 7847

陣列是一種資料結構,他使用同一型別的多個物件,其元素在記憶體中連續存放。c#用特殊的記號如中括號""宣告和使用陣列。

陣列的宣告:

先定義陣列中元素的型別,其後是乙個方括號和乙個變數名,如:

int myarray;

陣列的初始化

陣列是引用型別,必須給它分配堆上的記憶體。對此,應使用

new運算子,並且指定陣列中元素的型別和元素的數量來初始化陣列的變數。如:

myarray=new int[4];

在指定了陣列的大小後就不能重新設定陣列的大小。如果事先不知道陣列中應包含多少個元素,得使用集合。

初始化方式:

(1)int myarray;myarray=new int[4];

(2)int myarray=new int[4];

(3)int myarray=new int[4];//

陣列初始化器只能在宣告陣列變數時使用,不能在宣告陣列之後使用。

(4)int myarray=new int;//

不指定陣列的大小。編譯器會自動計算元素個數。

(5)int myarray=;//

簡化形式,編譯生成的**與前

4種相同。

訪問陣列元素:

(1)通過索引器訪問:

int myarray=new int;

int v1=myarray[0];//

讀取第乙個元素

int v2=myarray[1];//

讀取第二個元素

myarray[3]=44;//

為第四個元素賦值

//若使用錯誤的索引值

(訪問不存在的元素

),則丟擲

indexoutofrangeexception

異常(2)

不知道陣列元素個數的訪問方式:

for(int i=0;i

(3)使用

foreach

語句訪問:

foreach(int val in myarray)

//foreach

主要通過

ienumerable

和ienumerator

介面實現。

使用引用型別:

不但能夠宣告預定義型別的陣列,還可以宣告定製型別的陣列。

注意:如果陣列中的元素是引用型別,就必須為每個陣列元素分配記憶體(分配記憶體即物件例項化)。若使用了陣列中未分配記憶體的元素,則會丟擲

nullreferenceexception

型別的異常。

宣告方式與預定義型別的宣告方式一樣,初始化方式則必須使用例項化後的自定義類。如:

person mypersons=;

//person

為乙個使用者自定義類

// person(「f1」,」l1」)

為person

類的建構函式,第一引數表示

firstname,

第二個引數表示

lastname

多維陣列:

申明二維陣列時需要在括號中加上乙個逗號。陣列在初始化時應指定每一維的大小(也稱為階)。訪問陣列則採用兩個整數作為索引器來訪問。如:

int[,] twodim=new int[3,3];//

二維陣列宣告,陣列宣告之後,不能修改其階數

twodim[0,0]=1;//

二維陣列訪問

初始化也可以採用下列方式:

int[,] twodim=,,};

使用陣列初始化器時,必須初始化陣列的每個元素,不能遺漏任何元素。

三維陣列宣告和初始化如下:

int[,,] threedim=,},,},,}};

鋸齒陣列:

二維陣列的大小是矩形的。而鋸齒陣列的大小設定比較靈活,在鋸齒陣列中,每一行都可以有不同的大小。

鋸齒陣列又稱陣列中的陣列

在宣告鋸齒陣列時,要一次放置開閉括號。在初始化鋸齒資料時,先設定該陣列包含的行數。定義各行中元素個數的第二個括號設定為空,以為這類陣列的每一行包含不同的元素數。之後為每一行指定行中的元素個數,如:

int jagged=new int[3];//

二維陣列宣告使用的是

int[,]

,注意區別

jagged[0]=new int[2];

jagged[1]=new int[6];

jagged[2]=new int[3];

迭代鋸齒陣列中所有元素的**可以使用巢狀

for迴圈。在外層

for迴圈中,迭代每一行,內層的

for迴圈迭代一行中的每個元素:

for(int row=0;row

}

C 解析JSON陣列

待解析json陣列 函式 1 public static newtonsoft.json.linq.jarray gettojsonlist string json 2實現 搞定 我使用的是這個 只需將json放到這個 自動給我們生成實體類即可 實體類 1 using system 2 using ...

C語言多維陣列,結構體解析

首先講解乙個誤區 我們都知道a代表陣列的首位址,a也是陣列的位址,所以它們輸出的結果是一樣的,那麼為什麼a 1 和 a 1的結果不一樣呢?因為a代表的是陣列的首位址,也就是a 0 的位址,乙個int 型別的指標指向a 0 a代表是陣列的位址,也就是a 5 這個陣列的位址,所以這個是 int 5 型別...

C 中的物件陣列詳細解析

類是物件的抽象,我們可以使用乙個類來定義很多的物件,然後每個物件都有自己的屬性。當我們使用類來定義很多相同結構的物件的時候,我們可以採取物件陣列的方法。例如,乙個班有50個學生,我們定義了乙個學生類,該類的學生具有相同的資料成員和成員函式,我們就可以定義乙個這樣的陣列。複製 如下 student s...