gpt4 book ai didi

C 结构体数组的段错误

转载 作者:行者123 更新时间:2023-11-30 18:46:44 25 4
gpt4 key购买 nike

我正在一个大项目中工作,在下面的场景中遇到段错误。如果有人能说出问题的可能原因,那就太好了。谢谢。

我有两个结构,

struct HashElt
{
char* url;
float pageRank;
char* token;
struct HashElt* next;
};

struct HTable
{
struct HashElt* table[2000];
};

HTable中的表变量包含HashElt结构体,它是链表中的一个节点。当我尝试将新的 HashElt 链接到表变量中已存在的 HashElt 时,出现段错误。

if(table->table[i] == NULL)
table->table[i] = elt;
else
{ struct HashElt* currElt;
currElt = table->table[i];

while(currElt != NULL)
{ if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}

我在这一行中遇到段错误,currElt->next = elt;提前致谢。

最佳答案

看看你的错误,当 currEltNULL 并且在语句 currElt->next = elt; 中时,你的 while 循环将中断相当于 NULL->next = elt 这意味着您正在使用 NULL 指针来访问其值 next,这就是您遇到分段冲突的原因。

while(currElt != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
currElt->next = elt;
}

所以像下面这样改变它,一旦 currElt 指向最后一个节点,这里循环就会中断,因此这里它不为空。

while(currElt->next != NULL)
{
if(currElt == elt) return;
currElt = currElt->next;
}
if(currElt == elt) return;
currElt->next = elt;
}

关于C 结构体数组的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219690/

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