下面的函数用来填充一个二维数组,其中的浮点数增加了0.5

void MatrixFill(float *pf, float x, int rows, int columns, FILE *fp) {
    int i, j;
    printf ("\n***\tBegin MatrixFill\t***\n\n");
    fprintf (fp, "\n***\tBegin MatrixFill\t***\n\n");
    for (i = 0; i < rows; i++) {
        for (j = 0; j < columns; j++) {
          *(pf + i + columns ) = x;
          x += 0.5;
        }
    }
    printf ("\n***\tEnd MatrixFill\t***\n\n");
    fprintf (fp, "\n***\tEnd MatrixFill\t***\n\n");
}

但是,我不确定我的“填表”是怎么写的
任何关于指针/数组填充的帮助都会很好。
谢谢!

最佳答案

这是你弄到的烂摊子:(pf + i + columns ) = x应该是:*(pf + i + j * rows)
为什么?
首先,必须看到每一行通过所有列:

     col1|col2|col3
     ----+----+----
row1     |    |
     ----+----+----

现在,你看如果你想得到第x行,你必须通过所有列x次!
一般来说
在每个2D数组中,COLS和ROWS是列和行的总数,因此,arr[COLS][ROWS]

07-28 03:05