【发布时间】:2025-12-30 07:45:06
【问题描述】:
这是从我已经创建的队列中删除最前面的项目的代码。 我试图理解 itemPtr 将以某种方式在 main 中使用.. 尚不清楚,但这不是重点。 我想知道是否
if (queue->count == 0)
可以代替
if (!queue->count)
NULL和0的用法一样吗?
添加,这是做什么的?
free(deleteLoc)
我认为dequeue方法结束后deleteLoc会消失,但为什么要添加这个?这不是我的代码,所以我很好奇。它是否消除了 deleteLoc 包含的内存或 queue->front ? 不就是让数据本身消失吗?
谢谢。
bool dequeue(H* queue ,void* itemPtr)
{
node* deletecLoc;
if (!queue->count)
return false;
*itemPtr = queue->front->dataPtr;
deleteLoc = queue->front;
if (queue->count == 1)
queue->front = queue->rear = NULL;
else
queue->front = queue->front->next;
(queue->count)--;
free(deleteLoc);
return true;
}
【问题讨论】:
-
首先,
NULL是一个空指针的符号名。其次,在 C 中,所有非零都被认为是真的,而零是假的。这就解释了逻辑否定运算符!的作用,如果queue->count为零(因此为假),那么!queue->count将为真。如果您read a couple of good beginners books,所有这些都应该知道。请从那里开始。 -
请保持每个问题一个问题。请花一些时间阅读the help pages,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。也请take the tour 和read about how to ask good questions。最后请学习如何创建Minimal, Complete, and Verifiable Example。
标签: c data-structures queue free