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

エラー c2664 : QUEUEget(&head) を呼び出すときに、パラメーター 1 を "link **" から "link *" に変換できません。

これは、関数がパラメーターとして a (a へのポインター) をQUEUEget期待しているのに、a (a へのポインターへのポインター)を渡していることを示しています。link*linklink**link

あなたのreceive関数では、パラメータheadはすでにlink*:

void receive(link *head);

ただし、この行では、のアドレスhead(つまり、へのポインターlink*) をに渡していQUEUEgetます。

QUEUEget(&head);

代わりに、次のようにhead直接渡します。

QUEUEget(head);
于 2013-04-27T12:48:53.117 に答える
0

おそらくこの文脈で

QUEUEget(&head);

headですlink*。アドレスを渡しています。これにより、ポインターへのポインターが得られますlink**。あなたはおそらく必要です

QUEUEget(head)
于 2013-04-27T12:40:00.863 に答える