C-使用值创建动态矩阵

时间:2018-12-22 15:24:32

标签: c matrix dynamic

我尝试创建动态矩阵并使用scanf输入值。 它的工作仅1行,当我增加错误开始。 无法从第一行取得进展,因此无法获取值。

int main()
{
    int **matrix1;
    BuildMatrix(&matrix1, 3, 3);

}

void BuildMatrix(int*** matrix, int row, int column)
{
    int i, j, flag = 1, num;
    *matrix = (int**)malloc(row * sizeof(int*));
    if (*matrix == NULL)
    {
        printf("Not enough memory!\n");
    }
    else
    {
        for (i = 0; i < row && flag; i++)
        {
            *matrix[i] = (int* )malloc(column * sizeof(int));
            if (*matrix[i] == NULL)
            {
                printf("Not enough memory!\n");
                for (j = 0; j < i; j++)
                {
                    free(*matrix[j]);
                    flag = 0;
                }
                free(*matrix);
            }

        }
        if (flag)
        {
            for (i = 0; i < row; i++)
            {
                for (j = 0; j < column; j++)
                {
                    scanf("%d", &*matrix[i][j]);
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于operator precedence,表达式*matrix[i]等于*(matrix[i])。也就是说,它取消引用matrix[i]而不是matrix

您需要改用(*matrix)[i]