2017-03-11 66 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 –

相关问题