三维数组如何存储在内存中?
例如,按行和列d[rows][columns];
存储二维数组
在三维数组d[?][?][?]
的情况下,元素如何排列在c?
答案 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维阵列。