c - 表达式必须是可修改的结构数组上的可修改左值

标签 c arrays struct

我有一个程序应该刺激某种语言的编译器,使用结构我让内存的每个“字”都有一个 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 };

编辑:请不要建议更改结构,因为它们是大程序的一部分,更改它们需要太多工作

最佳答案

数组在 C 中不能直接赋值。但是,包含数组的结构可以直接赋值,所以你可以这样做:

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++ 中,您可以使用不受约束的临时值。)

关于c - 表达式必须是可修改的结构数组上的可修改左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42738881/

相关文章:

c - 使用指向 int 的指针初始化数组

c - 手动清零变量 VS 复制结构

c - 以编程方式访问shell扩展,替换和单词拆分

php - 使用 xpath 将无序列表 html 标记转换为多维数组

javascript - 无法将修改后的字符串推送到 javascript 数组

matlab - 为什么使用空单元格构造 MATLAB 结构体对象会创建一个空结构体?

c - 如何在C中将struct转换为char数组

CMAKE - 如何正确地将静态库的头文件复制到/usr/include?

c - 输出以下内容

c++ - OpenCV 网格区域