gpt4 book ai didi

c - 在另一个函数中使用创建结构函数会关闭程序。有小费吗?

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

这段代码应该与二维矩阵一起工作,因为它们是一个单一的数组。我必须转置输入矩阵。转置、打印和读取值的代码都可以,但我无法使用该函数创建一个新矩阵来将转置值放在那里。这是代码:

#include<stdio.h>
#include<stdlib.h>

struct Matriz {
int *p;
int lin, col, N;
};
typedef struct Matriz Matriz;

Matriz* CriaMatriz (int nlinhas, int ncolunas){
int tam=(nlinhas)*(ncolunas);
Matriz *a;
(*a).p=malloc(tam*sizeof(int));
(*a).col=ncolunas;
(*a).lin=nlinhas;
(*a).N=tam;
return a;
}

Matriz* TranspoeMatriz (Matriz *m){
int a=(*m).col;
int b=(*m).lin;

Matriz *t=CriaMatriz(a,b); //THE PROBLEM HAPPENS HERE AND ALL THE PROGRAM SHUT DOWN

//some code

return t;
}

int main(){
int o,p;
scanf("%d%d",&o,&p);

Matriz *g=CriaMatriz(o,p);
Matriz *tra=TranspoeMatriz(g);
}

我尝试用这个替换出现问题的行:

Matriz *t;
(*t).p=malloc((a*b)*sizeof(int));
(*t).col=b;
(*t).lin=a;
(*t).N=a*b;

一切顺利,但我必须使用 CriaMatriz 函数来创建新的 Matriz 结构。我使用了很多 printf 来查找程序停止的位置,并且我遗漏了一堆打印代码输出的函数以及带有 scanf 的函数。

最佳答案

您必须分配内存才能创建 Matrix 实体:

Matriz *a;
a = (Matriz*) malloc(sizeof(Matriz));

关于c - 在另一个函数中使用创建结构函数会关闭程序。有小费吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27305117/

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