我在我的程序中使用这个函数,并通过receive(&head);调用它。我做了一些错误的事情,得到了一个错误:当调用QUEUEget(&head)时,无法将参数1从"link **“转换为"link * *”。如果我理解正确的话,(*head)是一个指向另一个链接的链接,所以我应该做一些类似(&(&head))的操作,但它不起作用。
void receive(link *head){
int j;
for (j=0;j<WINDOW;j++){
if (((*head)->status==PENDING) || ((*head)->status==NEW)) {
(*head)->status=ACK;
printf("Packet No. %d: %d\n",(*head)->packetno,(*head)->status);
QUEUEget(&head);
}
}
}发布于 2013-04-27 20:40:01
大概就是在这种情况下
QUEUEget(&head);head是一个link*。您正在传递地址,该地址为您提供了指向指针的指针,即link**。你可能需要
QUEUEget(head)发布于 2013-04-27 20:48:53
错误头:在调用QUEUEget(& c2664 )时,无法将参数%1从"link **“转换为"link *”。
这告诉您QUEUEget函数需要一个link* (指向link的指针)作为其参数,但您向其传递的是link** (指向link的指针)。
在receive函数中,参数head已经是一个link*
void receive(link *head);但是,在这一行中,您将head的地址(即指向link*的指针)传递给QUEUEget
QUEUEget(&head);相反,只需直接传递head:
QUEUEget(head);https://stackoverflow.com/questions/16252186
复制相似问题