相关疑难解决方法(0)

3D数组如何存储在C中?

我知道C中的数组是按行主顺序分配的.因此,对于2 x 3阵列:

0  1
2  3
4  5
Run Code Online (Sandbox Code Playgroud)

存储在内存中

0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个2 x 3 x 2阵列怎么办:

0  1
2  3
4  5
Run Code Online (Sandbox Code Playgroud)

6  7
8  9
10 11
Run Code Online (Sandbox Code Playgroud)

这些如何存储在内存中?只是连续像:

0 1 2 3 4 5 6 7 8 9 10 11
Run Code Online (Sandbox Code Playgroud)

或者是其他方式?还是取决于什么?

c arrays low-level

38
推荐指数
5
解决办法
8万
查看次数

为什么初始化这样的二维数组会更糟​​?

for(int i = 0; i<100; i++)

    for(int j = 0; j<100; j++)

         array[j][i] = 0;
         // array[i][j] = 0;
Run Code Online (Sandbox Code Playgroud)

我的教授说,第一种方式初始化二维数组要比第二种方式要昂贵得多.有人可以解释引擎盖下面发生了什么事情吗?或者,这两种初始化方法是否具有相同的性能?

c arrays assembly multidimensional-array localityofreference

12
推荐指数
1
解决办法
2892
查看次数