初始化一个100×100的二维数组的所有元素,有两种方式:
方法一:
int a[100][100];
for(i=0; i<100; i++){
for(j=0; j<100; j++){
a[i][j] = 10;
}
}
方法二:
int a[100][100];
for(j=0; j<100; j++){
for(i=0; i<100; i++){
a[i][j] = 10;
}
}
现在我的问题是哪种方法更有效,为什么?
最佳答案
第一种方法,因为它会顺序访问数组。
C 以行优先顺序存储二维数组,这意味着 a[i][j] 将与 a[i][j+1] 相邻,但不与 a[ 相邻i+1][j].
还有另一种说法(概括为 >2 维)是最右边的索引在内存中是相邻的。或者递增索引意味着您必须跳过所有维度到您正在递增的索引的右侧。
关于c - 哪段代码效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10932950/