C

时间:2016-03-20 13:11:28

标签: c list pointers

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;)我会得到分段错误。我怎样才能解决这个问题? 谢谢您的帮助, 粘膜

1 个答案:

答案 0 :(得分:0)

更改此

struct A{
    char* name;
    AList *next;
};

到这个

struct A{
    char* name;
    AList next;
};

函数create的返回类型为AList,定义为A*。但A::next的类型为AList*,即A**,因此您的类型不兼容。