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

时间:2014-03-01 05:42:17

标签: c arrays multidimensional-array

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

例如,按行和列d[rows][columns];存储二维数组 在三维数组d[?][?][?]的情况下,元素如何排列在c?

2 个答案:

答案 0 :(得分: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数组本质上是一个2D数组的数组: 即

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 |

答案 1 :(得分:0)

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