2017-03-11 94 views
0

我有一個程序,應該刺激某種語言的編譯器,使用結構我使每個「字」的內存有一個15位int數組「位」問題是,每次我嘗試編譯這個測試時間我得到2個錯誤:表達式必須是可修改的結構數組上的一個可修改的左值

表達必須修改的左值

和 預期表達

我不知道爲什麼第二個出現 ,當我搜索第一個錯誤時,我發現左邊的值是即使我不明白爲什麼,它是不可修改的。

注:我試圖用一個指針,而不是一個數組的,並沒有改變任何事情

代碼:

word memory[1000]; 

    struct bit { 
      unsigned int bt : 1; 
     }typedef bit; 

    struct word { 
      bit mem[15]; 
     }typedef word; 

     memory[0].mem = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; 

編輯:因爲他們是請不建議更改結構一個大項目的一部分,它會花費太多的工作來改變他們

回答

0

數組不是直接分配的。然而,含有陣列結構的,所以你可以做的是這樣的:

word w = { { {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1} } }; 
memory[0] = w; 

隨着C99可以使用化合物字面說:

memory[0] = (struct word){ { {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1}, {1} } }; 

(在C++中可以使用不受約束臨時值。)

+0

[演示](https://ideone.com/ Ea0RQi) –

+0

謝謝!這工作。 另外,我很抱歉問這樣一個愚蠢的問題,我很新的c –

相關問題