Ошибка присвоения структурной группе из несовместимого типа
Я хочу выделить память для указателя типа структуры в структуре.
struct group{
char *group_n;
char *faculti;
};
struct student_info {
struct group *group;
};
int main(void)
{
struct student_info *student = malloc(sizeof(struct student_info) * 2);
for(int i = 0; i < 2; i++) {
*(student+i)->group = malloc(sizeof(struct group));
}
return 0;
}
Мне выдает ошибку
error: assigning to 'struct group' from incompatible type 'void *'
*(student+i)->group = malloc(sizeof(struct group));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
Скажите пожалуйста с чем связана данная проблема и как её решить.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
struct student_info *student
student — указатель на student_info.
student+i — указатель на i-й элемент массива student.
Далее в соответствии с приоритетами операций (student+i)->group представляет собой указатель на struct group.
После этого оператор разыменования * приводит к тому, что *(student+i)->group — это просто структура group.
Которой ну никак не присвоить указатель.
Это — с чем связана проблема.
Как решить?
(student+i)->group = malloc(sizeof(struct group));
или
student[i].group = malloc(sizeof(struct group));