gpt4 book ai didi

c - 将结构指针初始化为 null

转载 作者:太空宇宙 更新时间:2023-11-03 23:38:59 24 4
gpt4 key购买 nike

我正在尝试使用以下节点和表构建哈希表:

typedef struct Node {
int key;
int value;
int status;
} Node;

typedef struct Table {
int size;
Node* node;
} Table;
struct Table 中的

node 是一个 Node 指针,所以我认为 hasht(Table*)->node将是一个 Node*。我尝试将表中的所有 node* 初始化为 NULL,如下所示:

for(int i=0;i<hasht->size;i++)
{
hasht->node[i]=NULL;
}

但是,当我编译代码时,它给我这个错误:

" incompatible types when assigning to type ‘Node {aka struct Node}’ from type ‘void *’ hasht->node[i]=NULL; "

我不明白为什么hasht->node[i]Node,而不是Node*。如何使用 Table* 获取 Table 变量中的 Node* 成员?

最佳答案

hasht->nodeNode * ,它可以是指向单个 Node 的指针或指向 Node 数组的指针对象。 hasht->node[i]然后指的是iNode这样一个数组中的对象。请注意,根据定义,对于指针 p , p[i]相当于*(p + i) .

如果你想让你的表有一个节点数组,你可以按原样使用它,但是没有什么可以清空的,因为有实际的 Node表中的对象。

另一方面,如果您出于某种原因需要一个指向节点的指针数组,则需要将表成员更改为Node **node。 .然后,您可以让它指向指向 Node 的指针数组。 , 这确实可以单独取消(因为 hasht->node[i] 将是 Node * 那么)。不过,您会得到内存碎片并且对缓存不友好。

关于c - 将结构指针初始化为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50541397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com