多维数组的某些元素错误地读取零

时间:2012-09-13 02:51:20

标签: c arrays

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

-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

是否还有其他人发生过这种情况,或者知道我可能错过了导致这种情况的事情?

2 个答案:

答案 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]=>