我编写了一个代码,该代码从用户获取二维矩阵的元素,然后使用矩阵的基址进行打印。 为简单起见,我省略了输入部分。 这是我尝试过的代码: -
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
看起来我的代码错了。请帮助。真的很困惑!!!
答案 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");
}