C:从不兼容的指针类型分配[默认启用]

时间:2015-06-10 14:14:06

标签: c

我正在键入包含列表的代码,但我在函数 print_list 中有警告。 编译器突出显示print_array的第3行,即 l = l-> head-> next 。 有人可以帮帮我吗?

void print_list(list_struct* l){

    while(l!=NULL){
        printf("%s %s\n", l->head->content.name, l->head->content.surname);
        l=l->head->next;
    }
}

遵循结构的定义:

typedef struct {
    char name[50];
    char surname[50];
}t_contact;

typedef struct node_struct node_struct;
struct node_struct{
    t_contact content;
    node_struct* next;
    node_struct* prev;
};
typedef struct list_struct list_struct;
struct list_struct{
    node_struct* head;
    node_struct* tail;
    int count;
};

1 个答案:

答案 0 :(得分:1)

将您的打印功能更改为:

void print_list(list_struct* l){
    node_struct* tempnode;
    tempnode = l->head;
    while(tempnode){
        printf("%s %s\n", tempnode->content.name, tempnode->content.surname);
        tempnode=tempnode->next;
    }
}

这将打印您的列表,也不会影响列表的头指针,在尝试执行l = l->head->next时会意外更改,这也是语法错误,或者在尝试执行l->head = l->head->next时。