Присвоение значений массивам в структуре в c - PullRequest
0 голосов
/ 17 ноября 2018
struct student {
int marks[3];
int numberofsubjects[3];
};

Я создаю: struct student student;

в моем .c файле,

Если я пытаюсь назначить, используя

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

, я вижу ошибка: ожидаемое выражение перед '{' токеном

Есть что-то, чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Вы можете использовать инициализатор только при определении переменной.Вы не можете определить переменную, затем попытайтесь инициализировать ее позже, используя инициализатор.Вам нужно будет либо присвоить значения элементам полей массива вашей структуры, либо использовать инициализатор в точке определения.

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

Или еще лучше использовать обозначенные инициализаторы :

struct student student = { .marks = { 99, 99, 99 },
                           .numberofsubjects = { 1, 2, 3 }};
0 голосов
/ 17 ноября 2018

Главное, чего вам не хватает, - это невозможности назначить полные массивы; это разрешено только в процессе определения переменной (это называется инициализацией), но больше не допускается после определения переменной.

См. Следующую инициализацию (которая разрешена):

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...