C语言 在 C89 中为 2D 数组分配内存以使用函数打印矩阵



你好,我不得不编写一个程序(仍然有(,该程序将在函数中分配内存以存储您必须输入的数字然后打印矩阵(行和列的大小相同(。最重要的是,程序必须使用指针,局部变量,函数和C 89标准编写。

#include <stdio.h>
#include <stdlib.h>
void Matrix_Input(int *m, int ***Matrix);
void Matrix_Output(int m, int **Matrix);
int main()
{
int m;
int **Matrix;
int i;
Matrix_Input(&m, &Matrix);
Matrix_Output(m, Matrix);
for (i = 0; i < m; i++) /*free memory*/
free(*(Matrix+i));
free(Matrix);
return 0;
}
void Matrix_Input(int *m, int ***Matrix)
{
int i, j;
printf("Input number of rows/columns: n");
scanf("%d", m);
*Matrix = malloc(*m* sizeof(int*)); /*allocate memory*/
for (i = 0; i < *m; i++)
*(*Matrix+i) = malloc(*m* sizeof(int));
printf("Input integers: n");
for (i = 0; i < *m; i++)
for (j = 0; j < *m; j++)
scanf("%d", &((*Matrix)[i][j]));
}
void Matrix_Output(int m, int **Matrix)
{
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
printf("%5d", Matrix[i][j]);
printf("n");
}
}

该程序运行良好,但我被要求不要在这里使用三重指针(用于输入函数(:

void Matrix_Input(int *m, int ***Matrix)

老师告诉我使用双指针进行输入函数,就像我对这样的输出所做的那样:

void Matrix_Input(int *m, int **Matrix)

这就是一切出错的地方,因为我只知道如何使用三指针进行分配。我必须将输入作为一个单独的函数,不能把它放在main中。

有人可以帮助我吗?请。

改为返回矩阵指针。它是函数的输出,而不是真正的输入。

int** Matrix_Input(int* n) 

最新更新