我在我的程序中使用此函数,我在receive(&head);
调用它。我做错了并得到错误c2664:无法转换参数1来自"链接**"到"链接*"致电QUEUEget(&head)
时。如果我理解正确(*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);
}
}
}
答案 0 :(得分:0)
大概就是在这种情况下
QUEUEget(&head);
head
是link*
。您正在传递地址,该地址为您提供指向指针的指针,即link**
。你可能需要
QUEUEget(head)
答案 1 :(得分:0)
错误c2664:无法将参数1从“link **”转换为“link *” 在调用QUEUEget(&amp; head)。
时
这告诉您QUEUEget
函数期望link*
(指向link
的指针)作为其参数,但您传递的是link**
(指向link
的指针)。
在receive
函数中,参数head
已经是link*
:
void receive(link *head);
但是,在此行中,您将head
的地址(即指向link*
的地址)传递给QUEUEget
:
QUEUEget(&head);
相反,只需直接传递head
:
QUEUEget(head);