C 中的陣列,多維陣列和交錯陣列

2021-07-16 16:33:56 字數 2526 閱讀 8099

想研究一些物件導向的東西,也許是**寫得還不夠多。感覺還不好,看那些教程,不是嫌太水就是太難看不懂。心情很是落寞

不過再怎樣也要堅持每天發一篇部落格。

這篇來說一下c#中的陣列,多維陣列,交錯陣列的一些東西。

有那麼一點點研究茴香豆的茴有四種寫法的感覺。

先講三點顯而易見卻又值得一提的東西

第一點陣列是一種資料結構

似乎沒什麼好解釋的

第二點陣列型別是從抽象類array派生出的引用型別

與c當中的陣列不同的是c#以物件導向的方式設計的。

所以再次證明 任何東西都是物件

第三點c#的陣列可以開很大

c直接開在堆疊不同的還有c#的陣列在託管棧只有引用,而實際的資料是放在託管堆裡面的。

int[, , ] a = new int[500, 500, 500];

這樣是不會有問題的。同樣的大小在c早就……了

雖然是這麼說,正常使用是不大可能用到這麼大的陣列。

第四點陣列型別可以使用foreach迭代

這個部分我想另外寫一篇來研究這個

另外還有幾點可以參考msdn陣列部分

然後呢,先上**吧

[c-sharp]view plain

copy

//一維陣列

int a1 = 

newint

[3];  

int a2 = 

newint

;  int a3 = ;  

int a4;  

a4 = new

int[3] ;  

//int[3] a5; 錯誤**

//int a5[3]; 錯誤**

a1[0] = 0;  

console.writeline(""

,a1[0]);  

//多維資料

int[,] b1 = 

newint

[3, 3];  

int[,] b2 = 

newint

[,] ,  

,  };  

int[,] b3 = 

newint

[,] ,  

,  };  

int[,] b4;  

b4 = new

int[,],  

,  };  

int[, ,] b5 = 

newint

[2,2,2] ,},  

,}};  

b5[0,0,0] = 1;  

console.writeline(""

,b5[0,0,0]);  

//交錯陣列(陣列的陣列)

int c1 = 

newint

[3];  

c1[0] = new

int[3];  

c1[1] = new

int[2];  

c1[2] = new

int[1];  

int c2 = 

newint

,  newint

,  newint

};  

int c3 =  

,  new

int ,  

newint

};  

//int c4 = new int[3][3];錯誤**

c1[0][0] = 3;  

console.writeline(""

,c1[0][0]);  

//混搭

int[,] d1 = 

newint

[1][,];  

d1[0] = new

int[,],  

,  };  

console.writeline(""

,d1[0][0,0]);  

一維陣列部分,比較有價值的是那兩行錯誤的**。

c#與c在這個地方語法有所不同,本來這兩種語言的設計這塊時的思路就有所差異

關於語法的事,習慣就好了

關於多維陣列,c#當中有兩種方式,乙個是多維陣列,另一種是交錯陣列

根據msdn的說明

多維陣列只是陣列,交錯陣列是陣列的陣列

半句半句看都還好,整句看起來怎麼不是一回事。我也不知道該怎麼解釋比較好

簡單總結了下面幾點

交錯矩陣的宣告部分比較麻煩

使用時交錯陣列的樣子更像c語言是人都看出來了,可以利用for語句來簡化

多維陣列只能構造乙個矩形的資料結構,而使用交錯陣列可以設計出不規則的結構

所以有需要時可以選擇使用交錯矩陣。

在這裡 使用foreach迭代也有所不同,

交錯陣列的訪問速度比多維陣列快

具體的分析可以參見

《c#中各種陣列效能比較》

唉,想自己寫一些東西,真的不容易。也許是自己對這部分的內容掌握還沒十分徹底,也許是語言表達的問題

總之短短的一篇文章,寫了好久,而且似乎沒能表達出什麼特別的東西

原文**:

原作者為 atskyline。請尊重原作者版權

多維陣列與交錯陣列

建立乙個一維陣列 int a new int 10 建立乙個二維陣列 int a new int 2,3 兩行三列的陣列 我們知道一維陣列在記憶體中是佔據乙個線性的空間。而且陣列有乙個特點,也可以說是缺點,那就是陣列一旦分配之後,長度就是確定的。對於二維陣列來說亦同,二維陣列在記憶體中佔據的,其實也...

陣列和多維陣列

索引陣列 帶有數字索引的陣列 關聯陣列 帶有指定鍵的陣列 多維陣列 包含乙個或多個陣列的陣列 陣列中的每個元素都包含兩項 鍵和值 php中陣列元素可以是任意型別 索引陣列 鍵 值 鍵為數字 在陣列中,鍵不能相同,值可以相同 關聯陣列 鍵 值 鍵為字串,或字串與數字混合 鍵不能相同 索引陣列 關聯陣列...

C 多維陣列

宣告乙個二維陣列,如下 型別 陣列名 宣告乙個三維陣列,如下 型別 陣列名 多維陣列最簡單的形式是二維陣列。乙個二維陣列,在本質上,是乙個一維陣列的列表。乙個二維陣列可以被認為是乙個帶有 x 行和 y 列的 下面是乙個二維陣列a,包含 3 行和 4 列 所以訪問二維陣列的元素 a 行下標,列下標 初...