Я хочу использовать вложенные структуры с указателями в c. Я пишу этот код, но я не знаю, почему этот код не работает. на самом деле, как я могу выделить память для моей второй структуры?Вложенные структуры с указателем в C
#include <stdio.h>
#include <stdlib.h>
struct address
{
int code;
char city[10];
};
struct student {
char name[10];
struct address *ads;
} *person1;
int main()
{
person1 = malloc(sizeof(struct student));
scanf("%s", person1->name);
scanf("%d", &person1->ads->code);
scanf("%s", person1->ads->city);
printf("%s", person1->name);
printf("%d", person1->ads->code);
printf("%s", person1->ads->city);
return 0;
}
ПРИМЕЧАНИЕ: когда я использую «person1-> ads = malloc (sizeof (struct address));» программа столкнулась с проблемой и перестала работать.
[Обновление от комментариев:]
Я использую DEV C++ v5.4.2
Вы не выделили память для элемента объявления. Поэтому вам нужно добавить что-то вроде person1-> ads = malloc (sizeof (struct address)); –
я угадываю и тестирую .. но программа побежала до проблемы –
Для этого макета я бы не стал называть «ads» указателем. Просто объявите его в 'struct student' как' struct address ads; 'и заполните его' person1-> ads.'. – WhozCraig