2016-07-30 13 views
1

我首先想澄清一下我的邏輯是否正確: 在2維數組中,說A [x] [y],x代表大括號的數量和每個大括號中元素的數量。所以INT A [2] [3]被初始化爲:多維數組的位置與它們在初始化過程中所代表的位置的相關性

{ 
{1,2,3}, //from A[0][0] to A[0][2]; 
{4,5,6} //from A[1]{0] to A[1][2]; 
}; 

第二,我想知道類似的相關性是在一個3維數組,四維等,以及如何知道哪個維度數字與任何多維數組的級別相關。 例如,在A [3] [4] [2]中,3是否表示每個表中的2d表或行/列的數量?在A [2] [3] [4] [5]中,2代表2d表的數量,no。 3d桌子,沒有。 1d表,或沒有。每個1d表的行/列數?注意:我第一次接觸多維數組時,請儘可能簡化解釋。

+0

你上面的例子是正確的,並且對3D等的外推將起作用,儘管它們隨着每個額外維度變得更抽象。所以3D數組是2D數組的數組等等。還要確保您熟悉數組索引的* pointer *符號,例如'A [x] [y] = *(*(A + y)+ x)'。 (有趣的名字爲一個句柄':)' –

+0

我意識到這一點,我只是想知道什麼維數與初始化過程中的相關。我在一個例子中進行了編輯以澄清。 –

+0

好吧,我會在添加到您的問題時留下您的編輯給您,但請在'\'\''反引號之間格式化內聯代碼。這就是抽象成爲頭腦的遊戲。拿3D來說,這是一個新的維度來創建一個二維數組的數組,所以'A [2] [2] [3]'將會是你上面例子中的2個額外的一個'{}'。 –

回答

2

是的,你說這是正確的。你可以認爲遞歸

開始從一維數組(假設它有3個要素):

int 1darray[] = {0, 1, 2}; 

現在生產的二維數組只是說去的1darray每一個元素中又拿出一維數組,產生一個2D一個,像這樣:

int 2darray[] = {1darray_0, 1darray_1, 1darray_2}; 

其中1darray_01darray_11darray_2是一維數組,就像我們在開始時創建了。所以現在這將形成一個3x3的二維數組。


現在3D陣列可以形成這樣的:

int 3darray[] = {2darray_0, 2darray_1, 2darray_2}; 

其中2darray_02darray_12darray_2是2D陣列,就像我們2darray上面創建。所以現在這將形成一個3x3x3 3D陣列。


你例如:

A[3][4][2] 

A具有:

  1. 3行
  2. 4列
  3. 2的z列

然而,在一般情況下,我會建議你心目中的畫面我在2D dynamic array (C)

enter image description here

描述概括地說什麼,我試圖在開始解釋。

隨着您增加尺寸,在達到最後時,將前一個陣列的每個元素替換爲下一個維度的數組。