将值分配给c中的结构中的数组

时间:2018-11-16 21:54:49

标签: c arrays struct

struct student {
int marks[3];
int numberofsubjects[3];
};

我创建: 指导学生;

在我的.c文件中,

如果我尝试使用进行分配

student.marks = {99,99,99};

我确实看到了错误:'{'令牌之前的预期表达

有什么我想念的吗?

2 个答案:

答案 0 :(得分:1)

只能在定义变量时使用初始化程序。您无法定义变量,然后尝试稍后使用初始化程序对其进行初始化。您将必须赋值值到结构的数组字段的元素,或者在定义时使用初始化程序。

struct student student = { { 99, 99, 99 },
                           { 1, 2, 3 } };

或更妙的是,使用指定的初始化程序

struct student student = { .marks = { 99, 99, 99 },
                           .numberofsubjects = { 1, 2, 3 }};

答案 1 :(得分:0)

最主要的是您不能分配完整的数组;仅在定义变量的过程中允许这样做(此后称为初始化),但是一旦定义了变量,就不再允许这样做。

请参阅以下初始化(允许):

struct student {
    int marks[3];
    int numberofsubjects[3];
};

int main() {
    struct student s = { {1,2,3},{3,4,5}};  // in the course of variable definition; OK, this is "initialization"

    // s.marks = { 2,3,4 }; // illegal assignment of array
    return 0;
}