【发布时间】:2017-03-11 11:35:15
【问题描述】:
我编写了一个代码,它从用户那里获取二维矩阵的元素,然后使用矩阵的基地址进行打印。 为简单起见,我省略了输入部分。 这是我尝试过的代码:-
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
看来我的代码是错误的。请帮助。真的很困惑!
【问题讨论】:
-
也许你需要数组ant指针之间的基础知识。 *(*(p +i) + j)。 -----哦,对不起,我错了。
-
^ 这个不要理会,错了。
-
要访问矩阵的下一行,您需要将步幅(即每行 50 个元素)与行索引相乘。所以你会有
*(p + i * 50 + j) -
为什么还要使用基指针来打印...