typedef struct A A;
typedef struct A* AList;
struct A{
char* name;
AList *next;
};
AList create(char *name)
{
AList new = (AList)malloc(sizeof(AList));
new->name = name;
new->next = NULL;
return new;
}
void add(char* name, AList *aList)
{
AList list = *aList;
if (list == NULL)
{
list = create(name);
*aList = list;
}
else
{
while (list->next != NULL)
list = list->next;
list->next = create(name);
}
}
您好!这是我遇到麻烦的代码。一切正常,我只在代码的最后两行得到“从不可解释的指针类型中分配”,我不知道为什么。如果我改变指针使它们具有兼容的类型(在我看来,即list = * list-> next;)我会得到分段错误。我怎样才能解决这个问题? 谢谢您的帮助, 粘膜
答案 0 :(得分:0)
更改此
struct A{
char* name;
AList *next;
};
到这个
struct A{
char* name;
AList next;
};
函数create
的返回类型为AList
,定义为A*
。但A::next
的类型为AList*
,即A**
,因此您的类型不兼容。