我正在处理链接列表,并且在移动到链接列表的下一个元素时遇到问题。我得到的错误是:
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;
感谢您的帮助。
答案 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
现在,在内存中你会有这样的东西(内存地址只是套数字):
注意:指针保留内存地址。这就是为什么你给它们分配malloc()
的返回值,它给出了一个具有预定长度的可用“内存块”的内存方向。