0
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;),我得到分段错误。我怎样才能解决这个问题? 感谢您的帮助, 粘膜链接列表/指针C
有一个原因,我不建议做类型别名是指针,就像你的'AList'类型的别名,因为那么很容易忘记这是一个指针,并错误地做一些指针指针,像你做'next'结构成员,或分配错误的大小。 –
尽量不要将指针隐藏到'typedef'别名中 - 您的'create'函数是错误的,您为'AList'分配空间,这是'A *',而您应该为'struct A'分配空间。 – Holt
我不是一个纯粹的代码,但是这样看起来不是很好吗?还有更多,所以我应该为A分配内存,但返回A *,如 AList new =(AList)malloc(sizeof(A)); ? – Muco