Closed. This question needs to be more focused. It is not currently accepting answers. Learn more。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
两年前关闭。
这是从队列中删除前项的代码。
我试着去理解itemPtr主要会被使用。。还不知道,但那不是重点。
我想知道
可以代替
NULL和0的使用方式是否相同?
另外,这有什么用?
我以为deleteLoc会在这个dequeue方法结束后消失,但是为什么要添加这个呢?这不是我的代码,所以我很好奇。它是否会删除deleteLoc包含的内存或queue->front?
关键不是要让数据本身消失吗?
谢谢您。
可以代替
是的,您总是可以通过显式比较将隐式比较表示为零,反之亦然。
在由
这是干什么的?
要理解这一点,您需要查看
它是否会抹去
它可能改变也可能不改变
想改进这个问题吗?更新问题,使其只关注一个问题editing this post。
两年前关闭。
这是从队列中删除前项的代码。
我试着去理解itemPtr主要会被使用。。还不知道,但那不是重点。
我想知道
if (queue->count == 0)
可以代替
if (!queue->count)
NULL和0的使用方式是否相同?
另外,这有什么用?
free(deleteLoc)
我以为deleteLoc会在这个dequeue方法结束后消失,但是为什么要添加这个呢?这不是我的代码,所以我很好奇。它是否会删除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)
是的,您总是可以通过显式比较将隐式比较表示为零,反之亦然。
NULL
和0
的用法是否相同?在由
if
、while
和其他控制语句执行的与零的隐式比较的上下文中,与NULL
的比较和与零的比较的行为方式相同。这是干什么的?
free(deleteLoc)
要理解这一点,您需要查看
enqueue
的代码并找到对malloc
或calloc
的调用。本质上,free
是malloc
的“撤消”,告诉系统不再动态使用分配给它的内存。它是否会抹去
deleteLoc
所包含或queue->front
的记忆它可能改变也可能不改变
deleteLoc
所指向的内存的内容,但这无关紧要,因为该内存对您的程序是不受限制的:在调用free
之后访问它是未定义的行为。10-06 05:24