我知道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)
或者是其他方式?还是取决于什么?
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