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
또한 포인터를 통해 저장 회원 메모리를 할당 할 필요가
의 고정 anotated 버전입니다. 그래서 person1-> ads = malloc (sizeof (struct address))와 같은 것을 추가 할 필요가있다. –
나는 짐작하고 테스트하지만 .. 문제가 생겼다. –
이 레이아웃에서, 나는'ads '를 처음부터 포인터로 만들지 않을 것이다. 'struct student'에서'struct address ads;로 선언하고'person1-> ads '로 채 웁니다. – WhozCraig