0

我有一个结构

 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;
}
4

2 回答 2

3

(temp+controllo)是一个右值。我的意思是它是一个计算值,而不是放置某些东西的位置。我猜你真正的意思是*(temp+controllo) = nuovo->copie;,它会分配nuovo->copie到由temp+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 回答