gpt4 book ai didi

c - 在 C89 中为二维数组分配内存以使用函数打印矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:17 26 4
gpt4 key购买 nike

你好,我必须编写一个程序(现在仍然有),它会在函数中分配内存,用于存储你必须输入的数字,然后打印一个矩阵(行和列的大小相同)。最重要的是,程序必须使用指针、局部变量、函数和 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)

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

有人能帮帮我吗?请。

最佳答案

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

int** Matrix_Input(int* n) 

关于c - 在 C89 中为二维数组分配内存以使用函数打印矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52907498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com