C-about空条件和自由条件下队列的链表实现
这是用于从我已经创建的队列中删除前面项目的代码。 我试着理解itemPtr将以某种方式在main中使用。。还不知道,但这不是重点。 我想知道C-about空条件和自由条件下队列的链表实现,c,data-structures,queue,free,C,Data Structures,Queue,Free,这是用于从我已经创建的队列中删除前面项目的代码。 我试着理解itemPtr将以某种方式在main中使用。。还不知道,但这不是重点。 我想知道 if (queue->count == 0) 可以用来代替 if (!queue->count) if (!queue->count) NULL和0的使用方式是否相同 另外,这有什么作用 free(deleteLoc) free(deleteLoc) 我以为deleteLoc会在这个出列方法结束后消失,但为什么要添加这个呢?这不
if (queue->count == 0)
可以用来代替
if (!queue->count)
if (!queue->count)
NULL和0的使用方式是否相同
另外,这有什么作用
free(deleteLoc)
free(deleteLoc)
我以为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;
}
if(queue->count==0)
将执行与if(!queue->count)
完全相同的操作,因为在C中,如果某个值计算为0
,如果将其视为布尔值,则它将计算为false
在这种情况下,是的,NULL
和0
将实现同样的效果NULL
表示空指针,而0通常是数字0,但它们的计算结果相同
最后,free
将去掉先前分配的内存。您尚未显示所有代码,但在insert
函数的某个地方,将有一个malloc
(或类似函数),它为您分配内存以存储节点Free
去掉了内存,当你处理完一个节点时需要调用它。如果(队列->计数==0)
将做与如果(!队列->计数)
完全相同的事情,因为在C中,如果某个东西的计算结果为0
,如果你将它作为布尔值处理,它的计算结果将为false
在这种情况下,是的,NULL
和0
将实现同样的效果NULL
表示空指针,而0通常是数字0,但它们的计算结果相同
最后,free
将去掉先前分配的内存。您尚未显示所有代码,但在insert
函数的某个地方,将有一个malloc
(或类似函数),它为您分配内存以存储节点Free
清除该内存,在处理完节点后需要调用它
我想知道
if (queue->count == 0)
可以用来代替
if (!queue->count)
if (!queue->count)
是的,您始终可以使用显式比较将隐式比较表示为零,反之亦然
NULL
和0
的使用方式是否相同
在由if
、while
和其他控制语句执行的对零隐式比较的上下文中,对NULL
的比较和对零的比较的行为方式相同
这有什么用
free(deleteLoc)
free(deleteLoc)
要理解这一点,您需要查看enqueue
的代码,并找到对malloc
或calloc
的调用。本质上,free
是对malloc
的“撤销”,告诉系统您不再动态使用分配给它的内存
它是否会删除包含的deleteLoc
内存或queue->front
它可能会也可能不会更改由deleteLoc
指向的内存的内容,但这并不重要,因为该内存成为程序的禁区:在调用free
后访问它是未定义的行为
我想知道
if (queue->count == 0)
可以用来代替
if (!queue->count)
if (!queue->count)
是的,您始终可以使用显式比较将隐式比较表示为零,反之亦然
NULL
和0
的使用方式是否相同
在由if
、while
和其他控制语句执行的对零隐式比较的上下文中,对NULL
的比较和对零的比较的行为方式相同
这有什么用
free(deleteLoc)
free(deleteLoc)
要理解这一点,您需要查看enqueue
的代码,并找到对malloc
或calloc
的调用。本质上,free
是对malloc
的“撤销”,告诉系统您不再动态使用分配给它的内存
它是否会删除包含的deleteLoc
内存或queue->front
它可能会也可能不会更改由
deleteLoc
指向的内存的内容,但这并不重要,因为该内存成为程序的禁区:在调用free
后访问它是未定义的行为。首先,NULL
是空指针的符号名。其次,在C语言中,所有非零都被认为是真的,而零则是假的。这就解释了逻辑求反运算符的作用如果队列->计数为零(因此为假),则!队列->计数
将为真。如果你知道的话,所有这些都应该知道。请从这里开始,每个问题只回答一个问题。请花些时间阅读,特别是命名和。也请和。最后,请学习如何创建空指针。首先,NULL
是空指针的符号名。其次,在C语言中,所有非零都被认为是真的,而零则是假的。这就解释了逻辑求反运算符的作用如果队列->计数为零(因此为假),则!队列->计数
将为真。如果你知道的话,所有这些都应该知道。请从这里开始,每个问题只回答一个问题。请花些时间阅读,特别是命名和。也请和。最后,请学习如何创建一个。实际上在C中,NULL
的类型是void*
。这在语义上与int
值0
非常不同。实际上,在C语言中,NULL
的类型通常是void*
。那是