0

私は構造体を持っています

 typedef struct _scaffale {
     int NumeroScaffale;
     scaffali * succ;
     copia** pos;
 } scaffale;

構造体コピアの配列があります。エラーは次のコードで発生します。

copia** temp;
temp=scaff->pos;
(temp+controllo)=nuovo->copie;

正確には3行目。問題は、同じ構成を使用する次のコードでは完全に許可されているのに、なぜこの行でそのエラーが発生するのかということです。

while(i<=MAXLIBRI){
    if ((temp+i)!=NULL) {
        i=i+1;
    }
    else break;
}
4

2 に答える 2

3

(temp+controllo)右辺値です。つまり、何かを置く場所ではなく、計算された値です。あなたが本当に意味したのは、代わりに、で識別される場所*(temp+controllo) = nuovo->copie;に割り当てられたものだと思います。nuovo->copietemp+controllo

類推すると、 が でiある場合int、 とは言えますが、 とは言えi = 3ません(i+1) = 3。その理由が明らかであることを願っています。

于 2013-03-22T18:11:26.457 に答える
2

(temp+controllo)は計算された値であり、l-value「代入演算子の左側に置くことはできません」という派手な言い方である、適切であるための言語規則には従いません。

于 2013-03-22T18:12:05.017 に答える