我有一个结构
typedef struct _scaffale {
int NumeroScaffale;
scaffali * succ;
copia** pos;
} scaffale;
其中我有一个struct copia数组。该错误来自以下代码:
copia** temp;
temp=scaff->pos;
(temp+controllo)=nuovo->copie;
确切地说,在第三行中。问题是:为什么这一行给出了我的错误,而在下面的代码中,我使用相同的构造完全允许:
while(i<=MAXLIBRI){
if ((temp+i)!=NULL) {
i=i+1;
}
else break;
}
答案 0 :(得分:3)
(temp+controllo)
是右值。我的意思是它是一个计算值,而不是放置东西的位置。我猜你真正的意思是*(temp+controllo) = nuovo->copie;
,而nuovo->copie
会将temp+controllo
分配到i
标识的位置。
作为类比,如果int
是i = 3
,您可以说(i+1) = 3
,但您不能说{{1}}。我希望这显然是为什么。
答案 1 :(得分:2)
(temp+controllo)
是一个计算值,并不遵循语言规则,因为它是一个合适的l-value
,这是一种奇特的说法,“你不能把它放在作业的左边运算符”。