错误C2664,需要澄清

Error C2664 , need clarification

本文关键字:C2664 错误      更新时间:2023-10-16

我在我的程序中使用这个函数,我通过receive(&head);调用它。我做错了什么,得到一个错误c2664:调用QUEUEget(&head)时不能将参数1从"链接**"转换为"链接*"。如果我理解正确,(*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: %dn",(*head)->packetno,(*head)->status);
              QUEUEget(&head);
            }
        }
    }

在这种情况下

QUEUEget(&head);

headlink*。你正在传递地址,它给你一个指向指针的指针,即link**。你可能需要

QUEUEget(head)

错误c2664:无法将参数1从"link **"转换为"link *"当调用QUEUEget(&head)时

这是告诉你,QUEUEget函数期待一个link*(一个指向link的指针)作为它的参数,但是你传递给它一个link**(一个指向link的指针)。

receive函数中,参数head已经是link*:

void receive(link *head);

然而,在这一行中,你将head的地址(即指向link*的指针)传递给QUEUEget:

QUEUEget(&head);

直接传递head:

QUEUEget(head);