如何使用基址在C中打印2D矩阵的元素?

时间:2017-03-11 11:35:16

标签: c matrix

我编写了一个代码,该代码从用户获取二维矩阵的元素,然后使用矩阵的基址进行打印。 为简单起见,我省略了输入部分。 这是我尝试过的代码: -

 main()
 {
  int mat[50][50],i, j, r, c, *p;
   p = &mat[0][0];

   <------skip the input---->

 for(i = 0; i < r; i++) /* print the matrix*/
   {
      for(j = 0; j < c; j++)
      {
         printf("%d\t", *((p + i) + j));
      }
      printf("\n");
  }
}


Input: 
1
2
3
4

Output:
1   2
2   0

看起来我的代码错了。请帮助。真的很困惑!!!

2 个答案:

答案 0 :(得分:3)

基本上你要打印的是p[i][j],它相当于*(p +(i * rowNum)+ j)。这可以如下所示。

printf("%d\t", *(p + (c  *  i) + j);

答案 1 :(得分:0)

你确定要用指针做吗? 这是一个更简单的解决方案:

int matrix[SIZE][SIZE] = { {1, 2}, {3, 4} };

for (int row = 0; row < SIZE; row++)
{
    for (int col = 0; col < SIZE; col++)
    {
        printf("%d\t", matrix[row][col]);
    }
    printf("\n");
}