看到一篇博客[https://blog.csdn.net/u013256816/article/details/105525284](https://blog.csdn.net/u013256816/article/details/105525284); 里面提到一个面试题。
如下两代码块,哪个运行速度快。
```
int LEN = 10000;
int[][] arr = new int[LEN][LEN];
for (int i = 0; i < LEN; i++) {
for (int j = 0; j < LEN; j++) {
arr[i][j] = 1; //差别在这里
}
}
```
```
int LEN = 10000;
int[][] arr = new int[LEN][LEN];
for (int i = 0; i < LEN; i++) {
for (int j = 0; j < LEN; j++) {
arr[j][i] = 1; //差别在这里
}
}
```
Java下的答案是:arr\[i][j]会比arr\[j][i]快很多。
这篇博客对该问题的分析应该是套错了理论。根本没分析到点上。下面详细分析一下这个问题。
### C/C++的多维数组内存分布
首先看下C/C++中,内存是怎么存储的,这在学校里都有教过,比较简单。