C &引用;赋值从指针生成整数,无需强制转换;错误

C &引用;赋值从指针生成整数,无需强制转换;错误,c,C,我正在从Java迁移到C,目前我正在尝试设计一个链表。为了做到这一点,我创建了一个“节点”结构,它有一个整数“val”属性和一个“dummy_element*next”属性,该属性只是指向下一个对象的指针。在程序刚开始运行时,内存中不应存在任何节点,因此我创建了一个“Init_node()”函数,该函数创建了一个名为“first”的节点,并使两个外部指针“linked_head”和“linked_tail”指向“first”节点。以下是相关代码: typedef struct dummy

我正在从Java迁移到C,目前我正在尝试设计一个链表。为了做到这一点,我创建了一个“节点”结构,它有一个整数“val”属性和一个“dummy_element*next”属性,该属性只是指向下一个对象的指针。在程序刚开始运行时,内存中不应存在任何节点,因此我创建了一个“Init_node()”函数,该函数创建了一个名为“first”的节点,并使两个外部指针“linked_head”和“linked_tail”指向“first”节点。以下是相关代码:

    typedef struct dummy_element {
         int val;
         struct dummy_element *next;
    }node;

    node *linked_head;
    node *linked_tail;
    node *traversal

    void Init_node(){
        node first;
        first.val = NULL;
        first.next = NULL;
        linked_head = &first;
        linked_tail = &first;
    }

Init函数的全部作用是初始化一个空节点,这样指针就可以指向某个对象。然而,我一直在第一次遇到错误“赋值从指针生成整数而不进行强制转换”。val=NULL。我不知道如何避免这个错误

您想要
first.val=0
而不是
NULL
。您应该先保留
first.next=NULL
,这是正确的

最终,您将遇到使用
memset(&first,0,sizeof first)
将结构归零的代码。虽然这通常也有效,但它也有问题(当所有位0并不意味着实际值为0时)


这不是重点,但我必须警告你。您正在存储一个对象的地址(
first
),该对象将在函数结束时消失。您可能希望使用
malloc
来创建您的
第一个
,如下所示:

node *first = malloc(sizeof *first);
if (!first) {
    /* malloc failed, the process is in trouble. */
}

first->val = 0;
first->next = NULL;
linked_head = first;

您需要
first.val=0
而不是
NULL
。您应该先保留
first.next=NULL
,这是正确的

最终,您将遇到使用
memset(&first,0,sizeof first)
将结构归零的代码。虽然这通常也有效,但它也有问题(当所有位0并不意味着实际值为0时)


这不是重点,但我必须警告你。您正在存储一个对象的地址(
first
),该对象将在函数结束时消失。您可能希望使用
malloc
来创建您的
第一个
,如下所示:

node *first = malloc(sizeof *first);
if (!first) {
    /* malloc failed, the process is in trouble. */
}

first->val = 0;
first->next = NULL;
linked_head = first;

first.val
属于
int
类型,但您正在为其赋值
NULL
属于指针类型。将其更改为
0

first.val = 0;

first.val
属于
int
类型,但您正在为其赋值
NULL
属于指针类型。将其更改为
0

first.val = 0;