将 NULL 插入结构数组时“分配给类型时不兼容的类型”

Deb*_*bie 1 c data-structures

我正在尝试在 C 中实现链接(哈希)。到目前为止我已经编写了以下代码:

\n
#include<stdio.h>\n#include<stdlib.h>\n#define size 10\n\ntypedef struct hashNode\n{\n    int data;\n    struct hashNode *next;\n} node;\n\nint main()\n{\n    node chain[size];\n    \n    for(int i=0; i<=(size-1); i++)\n        chain[i] = NULL;\n    \n    //insert(chain, 10);\n    \n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我收到以下错误:

\n
#include<stdio.h>\n#include<stdlib.h>\n#define size 10\n\ntypedef struct hashNode\n{\n    int data;\n    struct hashNode *next;\n} node;\n\nint main()\n{\n    node chain[size];\n    \n    for(int i=0; i<=(size-1); i++)\n        chain[i] = NULL;\n    \n    //insert(chain, 10);\n    \n    return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

Ted*_*gmo 6

看起来您试图最初使所有nodes 指向NULL,但nodes 不是指针。他们有一个名为的指针成员next,所以你应该做的是:

for(int i=0; i<=(size-1); i++)
    chain[i].next = NULL;
Run Code Online (Sandbox Code Playgroud)

您还可以跳过循环并在定义数组时直接初始化数组:

node chain[size] = {0};
Run Code Online (Sandbox Code Playgroud)

旁注:不要写i<=(size-1). size它具有额外的认知负荷,并且在某种unsigned类型(常见)的情况下并不安全。写i < size