我正在尝试使用多维数组来存储数据,但是,数组的某些索引似乎不能正常工作。我得到大多数元素的正确数据,但即使读入的值不为零,它们中的一部分也将读为零。该阵列最终看起来像这样:
-3.238467 -3.237679 -0.487128 -3.237634 -3.238513 -3.239868
-3.239361 -3.238660 0.000000 -3.238610 -3.435949 -3.437109
-3.622402 -3.621796 0.000000 -3.621911 -3.436662 -3.437587
-3.237072 -3.236771 0.000000 -3.237329 -3.237926 -3.238605
-3.227221 -3.227291 0.000000 -3.228477 -3.229173 -3.229775
-3.204790 -3.205429 0.000000 -3.207087 -3.207956 -3.208255
-2.618961 -2.621088 -2.622552 -2.623831 -2.624973 -2.625057
即使我检查这样的值:
for(j=0; j<(num_cell_y); j++) {
for(i=0; i<(num_cell_x); i++) {
...
...
...
grid[i][j] = u_avg;
printf("%f\n", u_avg);
printf("%f\n", grid[i][j]);
}
}
我打印出两个不同的值:
-3.237675
0.000000
是否还有其他人发生过这种情况,或者知道我可能错过了导致这种情况的事情?
答案 0 :(得分:5)
您似乎需要按此顺序填充数组 -
grid[j][i] = u_avg; // Note the indexes being reversed.
答案 1 :(得分:1)
这应该是
的错误grid[j][i] = u_avg;
您的订单grid[i][j] = u_avg;
j在外部循环中,因此它一直固定为i直到i<(num_cell_x);
并且数组是多维的并且根据您的代码它更改外部数组,如
i j
a[0][0]=>
a[1][0]=>
a[3][0]=>
这是不正确的,所以如果你做j而不是我
j 1
a[0][2]=>array(1=>'',2=>'',...)
a[1][0]=>
a[3][0]=>