0

我正在尝试使用多维数组来存储数据,但是,数组的某些索引似乎无法正常工作。我得到了大多数元素的正确数据,但即使读取的值不为零,它们中的一部分也会全部读取为零。数组最终看起来像这样:

-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

有没有其他人发生过这种情况,或者知道我可能错过了什么导致这种情况?

4

2 回答 2

5

看来您需要按此顺序填充数组 -

grid[j][i] = u_avg;  // Note the indexes being reversed.
于 2012-09-13T02:53:48.187 回答
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 而不是 i

j    1
a[0][2]=>array(1=>'',2=>'',...)
a[1][0]=>
a[3][0]=>
于 2012-09-13T03:04:51.183 回答