この特定のコード ブロックの最後の行で、「割り当ての左オペランドとして左辺値が必要です」というエラーが生成されます。混乱は、最後の行でこのエラーがスローされ、最後から 2 番目の行ではスローされない理由にあります。
int p2 = 0;
spage = find(in.startpage);
spage->noutgoing++;
spage->outgoing = (struct webpage *)realloc((spage->outgoing),((spage->noutgoing)*sizeof(struct webpage)));
epage = find(in.endpage);
epage->nincoming++;
epage->incoming = (struct webpage *)realloc((epage->incoming),((epage->nincoming)*sizeof(struct webpage)));
position = ((epage->nincoming));
&(epage->incoming[0]) = spage;
&(epage->incoming[p2]) = spage;
ここでspage
、epage
は以下で定義される構造体です。
struct webpage {
char name; /* name of page */
struct webpage *outgoing; //array of pointers pointing to outgoing webpages
struct webpage *incoming ; //array of pointers pointing to incoming webpages
int noutgoing;
int nincoming;
};
関数find
は へのポインターを返しますstruct webpage
。
この問題は、構造体とポインタを double に変更し、最後の行を に変更することで解決されoutgoing
ましincoming
た(epage->incoming[p2]) = spage;
。
エラーが発生した理由はまだわかりませんが...