2014-03-01 26 views
0

三维数组如何存储在内存中?三维数组如何存储在内存中?

例如,二维阵列被存储在列方面和列d[rows][columns]; 在三个一维阵列d[?][?][?]如何被布置在c中的元件的情况下?

+1

可能重复[如何在内存中格式化多维数组?](http://stackoverflow.com/questions/2565039/how-are-multi-dimensional-arrays-formatted-in-memory) –

回答

1

可能重复:How are multi-dimensional arrays formatted in memory?

多维阵列在存储器中连续布置,而不是作为行和​​列。

例如, 如果你有

Array[5][2]={{0,1},{2,3},{4,5},{6,7},{8,9}}; 

它会被存储在内存中:

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 

而不是:

| 0 | 1 | 
| 2 | 3 | 
| 4 | 5 | 
| 6 | 7 | 
| 8 | 9 | 

而且以3D阵列基本上是二维数组的数组: ie

Array[2][5][2]= Array_1[5][2], Array_2[5][2] 

如果

Array_1[5][2]={{0,1},{2,3},{4,5},{6,7},{8,9}}; 

Array_2[5][2]={{10,11},{12,13},{14,15},{16,17},{18,19}}; 

所以,在存储器该3D阵列将被布置:

| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 
+0

正确。 3D数组只是一个数组数组。 – keshlam

+0

感谢brokenfoot .. – Karthikeyan

0

C使用行优先布局。当2D阵列(即矩阵)被线性化时,第一行首先被存储,然后第二行,第三行随后被存储,依此类推。对于N维阵列也是如此。

相关问题