尝试移动到链接列表的下一个元素时出错

时间:2016-11-13 19:34:32

标签: c pointers linked-list

我正在处理链接列表,并且在移动到链接列表的下一个元素时遇到问题。我得到的错误是: error: incompatible types when assigning to type 'item' from type 'struct item *

以下是代码:

typedef struct item
{
    float size;
    struct item *next;
} item;

item head, curr, tail;

...

head.next = (item*) malloc(sizeof(item));
curr = head.next;

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

在此转让声明中

curr = head.next;

curr的类型为item,而head.next的类型为item *。这是第一个是结构对象,第二个是指针。它们是不相容的。

因此编译器发出错误。

你应该像指针一样声明变量curr

item *curr;

答案 1 :(得分:0)

根据您的说明,您希望curr成为链接列表的下一个节点(?)。

在这种情况下,您应该将curr的记忆方向指定为head.next。怎么样,你可能会问?:

item head, curr;   // declaration of variables

head.size = 8;
curr.size = 5;

head.next = &curr; // making 'curr' the next node

现在,在内存中你会有这样的东西(内存地址只是套数字):

Memory example

注意:指针保留内存地址。这就是为什么你给它们分配malloc()的返回值,它给出了一个具有预定长度的可用“内存块”的内存方向。