我尝试创建动态矩阵并使用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]);
}
}
}
}
}
答案 0 :(得分:0)
由于operator precedence,表达式*matrix[i]
等于*(matrix[i])
。也就是说,它取消引用matrix[i]
而不是matrix
。
您需要改用(*matrix)[i]
。