用指针填充C数组

时间:2015-11-21 16:03:45

标签: c arrays pointers

以下函数应该填充浮点数增加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+stuff)=x;

指针/数组填充的任何帮助都会很棒。 谢谢!

1 个答案:

答案 0 :(得分:1)

这是你弄得一团糟:(pf + i + columns ) = x它应该是:*(pf + i + j * rows)

为什么?

首先,您必须看到每一行都通过所有列:

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

现在,您看是否要获取行号x,您必须遍历所有列x次!

一般说来

在每个2D数组arr[COLS][ROWS]中,其中COLS和ROWS是列和行的总数,arr[i][j] = arr[i + j * COLS] = arr[j + i * ROWS]