2013-02-24 63 views
1

我想用相同的隨機選擇的整數填充幾個數組,但我不斷收到主題行中的錯誤。這是我的代碼:作爲賦值左操作數所需的l值

while(i++ < arraySize){ 
     randInt = (int)random()%100; 
     originalArray++ = randInt; 
     ascendingOrderArray++ = randInt; 
     descendingOrderArray++ = randInt; 
    } 

爲什麼在這種情況下發生此錯誤?根據我的理解,這段代碼與將randInt分配給三個數組,然後在代碼末尾遞增指針相同。

回答

1

在這裏,您正在嘗試爲數值分配一個值 - 數組的地址。一個數字是一個右值,而不是左值,所以它失敗了。

originalArray++ = randInt; 

在這裏,你將值分配給一個內存位置 - 通過取消引用指針獲得的地址。這是一個左值,所以它成功了:

*originalArray++ = randInt; 
1

假設originalArrayascendingOrderArraydescendingOrderArray是類型int *randIntint類型的指針,用戶可以在同時進行解參考指針。例如*originalArray++ = randInt;。這將取消引用產生您可以分配的「左值」的指針,爲其分配值randInt(指向指針指向的originalArray時),然後增加指針。

0

原來的++不是一個對象,所以你不能存儲一個值。

相關問題