gpt4 book ai didi

c - 设置一个指针,保留NULL

转载 作者:行者123 更新时间:2023-11-30 15:43:23 25 4
gpt4 key购买 nike

我正在尝试实现一个链表,但遇到了一个非常顽固且令人沮丧的问题。这是相关代码。

Node* current = list->head;
Node* previous = malloc(sizeof(Node*));
previous = NULL;
while(current != NULL){
if(current == NULL){
printf("current is null");
}
last = current;
current = current->next;
if(last == NULL){
printf("last is null");
}
}

现在的问题是它正在打印

“最后一个为空”

经常但不打印

“当前为空”

一次。如果 current 不为 null 并且我设置了 last = current 那么为什么 last 仍为 null?

感谢您提供的所有见解

最佳答案

首先,您不想使用 sizeof(Node*) ,它将分配指针的大小(32 位/64 位/其他值,具体取决于平台)。这是毫无意义的,因为您可以并且已经使用 Node* previous 定义了一个指针。

其次,while() 中的表达式检查 current 是否不等于 NULL。如果 current 等于 NULL ,它将直接退出循环,因此您的 if(current == NULL) 比较将不会执行。

如果将 if(current == NULL) 放在 current = current->next; 之后,则可以使该比较有效。但是,如果打印 last is null,则您的代码中的其他内容也完全有缺陷,因为 currentlast 之前必须为 null。令人惊讶的是它没有给出段错误或其他问题。

关于c - 设置一个指针,保留NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19870831/

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