为什么不能打印出此矩阵/ 2D阵列?

时间:2019-12-07 15:15:28

标签: c arrays pointers

我正在尝试输入一个矩阵,然后使用函数进行打印。 进入read_mat函数时,程序崩溃。我怎么了?

#include <stdio.h>
#include <stdlib.h>

int** insert_mat(int **mat, int r, int c);


int** read_mat(int** mat, int r, int c)
{
    mat = (int**)calloc(r,sizeof(int*));
    for (int i=0; i<r; i++)
    {
        mat[i]=(int*)calloc(c,sizeof(int));
    }
    insert_mat(mat, r, c);
    return mat;

}


int** insert_mat(int **mat, int r, int c)
{
    for (int i=0; i<r; i++)
    {
        for(int j=0; j<c; j++)
        {
            printf("\nmat[%d][%d] = ",i , j);
            scanf("%d", &mat[i][j]);
        }
    }

    return mat;
}

void print_mat(int **mat, int r, int c)
{
    printf("\n");

    for (int i=0; i<r; i++)
    {
        for(int j=0; j<c; j++)
        {
            printf("%d ",mat[i][j]);

        }
        printf("\n");
    }

}



int main()
{
    int **mat;
    int r1 =2;
    int c1 = 2;
    read_mat(mat, r1, c1);
    print_mat(mat, r1, c1);

    return 0;
}

我也尝试在main中打印mat的元素(例如:printf(“%d”,mat [0] [0]);),它也无法正常工作。所以也许错误是当我插入元素时?但是我不确定我做错了什么。

0 个答案:

没有答案