这是我的任务: arrPrintMatrix(int * matrix,int m,int n):打印内容 矩阵[m] [n]以表格格式显示在屏幕上。
这是我的代码:
#include <stdio.h>
#include <malloc.h>
int main() {
void arrPrintMatrix(int *matrix, int m, int n);
int matrix[2][3] = {{5, 10 , 15}, {0, 2, 4}};
int *ptr;
ptr = &matrix[0][0];
arrPrintMatrix(ptr, 2, 3);
return 0;
}
void arrPrintMatrix(int *matrix, int m, int n) {
int i, j;
for (i = 0; i < m; i++) {
printf("\n");
for (j = 0; j < n; j++) {
printf("%d\t", matrix[i] + j);
}
}
}
但是当我运行这段代码时,我得到5 6和7作为第一行,10 11和12作为第二行。所以 matrix [i] + j 有问题。我该如何解决这个问题?
顺便说一下,我对指针数组,malloc,指向函数的指针感到困惑,所以一般来说我对指针很困惑。如果您推荐一些网页或视频,我会很高兴。
答案 0 :(得分:1)
mChange:
matrix[i] + j
要:
matrix[(i*n)+j]
答案 1 :(得分:1)
更改行
printf("%d\t", matrix[i] + j);
到
printf("%d\t", matrix[i*n+j]);
<强>更新强>
在this article中很好地解释了2D阵列的内存布局。