求助一个关于队列首端删除的问题

bool DeQueue(Item *pitem, Queue *pq)
{
Node *pt;
if(QueueIsEmpty(pq))
{
return false;
}
CopyToItem(pq->front, pitem); // ?????????
pt = pq->front;
pq->front = pq->front->next;
free(pt);
pq->items--;
if(pq->items == 0)
{
pq->rear = NULL;
}
return true;
}

请问一下在队列删除时CopyToItem(pq->front, pitem)这个有何作用,为什么要将队列首端的item拷贝到*pitem当中呢?

要看CopyToItem实现的具体代码,猜测是出队以后放入pitem变量再返回。释放原先的那个。