0

我在我的程序中使用了这个函数,我用它来调用它receive(&head);。我做错了,得到一个错误 c2664: cannot convert parameter 1 from "link **" to "link *" when calling 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);
            }
        }
    }
4

2 回答 2

0

大概在这种情况下

QUEUEget(&head);

head是一个link*。您正在传递地址,它为您提供指向指针的指针,即link**. 你可能需要

QUEUEget(head)
于 2013-04-27T12:40:00.863 回答
0

错误 c2664:在调用 QUEUEget(&head) 时,无法将参数 1 从“link **”转换为“link *”。

这告诉您该QUEUEget函数需要一个link*(指向 a 的指针link)作为其参数,但您传递给它的是一个link**(指向 a 的指针的指针link)。

在您的receive函数中,参数head已经是link*

void receive(link *head);

但是,在这一行中,您将head(即指向 a 的指针link*)的地址传递给QUEUEget

QUEUEget(&head);

相反,直接通过head

QUEUEget(head);
于 2013-04-27T12:48:53.117 回答