你好,我正在用c语言编写一个带有链接列表的程序,我不知道我做错了什么。问题出在“podio novo=(struct podio)malloc(sizeof(podio));”推的内部。
这是我的代码:
struct Sucesso {
char nome_equipe[N1];
float distancia_alvo;
float tempo_propulsao;
};
struct Node {
struct Sucesso *dados;
struct Node *prox;
};
typedef struct Node podio;
void push(podio *p, struct Sucesso elem) {
podio *novo = (struct podio*) malloc(sizeof(podio));
if(novo != NULL) {
novo->dados=elem;
novo->prox=*p;
*p=novo;
}
}
最佳答案
问题是struct podio
是一个不完整的类型,与通过podio
定义的类型无关。因此,这两种类型(struct Node
和typedef struct Node podio;
)不兼容;它们指向不同类型的对象。
如果在podio *
行中丢失struct podio *
,则应编译代码。
podio *novo = (podio *) malloc(sizeof(podio));
或:
podio *novo = malloc(sizeof(*novo));
会有人因为你而责备你;幸运的是,我不是其中之一。