使用指针打印矩阵的内容

时间:2014-04-28 18:37:04

标签: c pointers matrix

这是我的任务: 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,指向函数的指针感到困惑,所以一般来说我对指针很困惑。如果您推荐一些网页或视频,我会很高兴。

2 个答案:

答案 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阵列的内存布局。