C - Создать динамическую матрицу со значениями - PullRequest
0 голосов
/ 22 декабря 2018

Я пытаюсь создать динамическую матрицу и ввести значения с помощью 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 голосов
/ 22 декабря 2018

Из-за приоритета оператора выражение *matrix[i] равно *(matrix[i]).То есть он разыменовывает matrix[i], а не matrix.

. Вместо него нужно использовать (*matrix)[i].

...