gpt4 book ai didi

c - 为什么我的代码无法通过我的函数访问矩阵的元素?

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

<分区>

我正在开发代码来接受两个矩阵,为它们动态分配内存并使用函数显示它们的总和。将我的输入、输出和求和函数的返回类型声明为“void”会导致段错误,但是,将返回类型设置为“int**”时,代码工作正常。我想知道有什么区别。当函数的返回类型为“void”时,为什么我的代码无法访问矩阵的元素?

我认为它应该能够,因为我已将指向矩阵的指针作为函数的参数传递。

//Before changing the return type:

void input(int **x,int m,int n){
int i,j;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++){
x[i]=(int*)malloc(n*sizeof(int));
for(j=0;j<n;j++){
scanf("%d",&x[i][j]);
}
}
}
void sum(int **z,int **y,int **x,int m,int n){
int i,j;
z=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++){
z[i]=(int*)malloc(n*sizeof(int));
for(j=0;j<n;j++){
z[i][j]=x[i][j]+y[i][j];
}
}
}
void output(int **x,int m,int n){
int i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",x[i][j]);
}
printf("\n");
}
}


//After changing the return type:

int** input(int **x,int m,int n){
int i,j;
x=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++){
x[i]=(int*)malloc(n*sizeof(int));
for(j=0;j<n;j++){
scanf("%d",&x[i][j]);
}
}
return x;
}
int** sum(int **z,int **y,int **x,int m,int n){
int i,j;
z=(int**)malloc(m*sizeof(int*));
for(i=0;i<m;i++){
z[i]=(int*)malloc(n*sizeof(int));
for(j=0;j<n;j++){
z[i][j]=x[i][j]+y[i][j];
}
}
return z;
}
void output(int **x,int m,int n){
int i,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",x[i][j]);
}
printf("\n");
}
}

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