9.3.2 구조체 안에 구조체 사용하기
구조체 포인터를 사용해 구조체 안에 똑같이 생긴 구조체를 다시 한번 정의할 수 있습니다. 예를 들어, ‘나도회사’에서 자사 게임 정보를 소개하면서 ‘너도회사’에서 만든 게임 정보도 같이 소개한다고 해 봅시다.
앞에서 정의한 GameInfo 구조체의 마지막 멤버로 다음과 같이 friendGame을 추가로 선언합니다. friendGame은 구조체 GameInfo의 구조체 변수를 가리키는 구조체 포인터로, 구조체 안에 있는 또 다른 구조체를 가리키는 역할을 합니다.
9.3.2 구조체안의구조체.c
struct GameInfo {
char * name;
int year;
int price;
char * company;
struct GameInfo * friendGame; // 구조체 포인터
};
friendGame은 GameInfo 구조체의 5번째 멤버이면서 포인터 변수입니다. 따라서 ‘나도회사’ 정보를 가진 gameInfo1 변수로 friendGame 멤버에 접근할 수 있습니다. 그리고 ‘너도회사’ 정보를 가진 gameInfo2 변수의 주소를 저장하면 gameInfo1.frendGame이 gameInfo2를 가리키게 되어 다른 회사의 게임 정보도 접근할 수 있습니다.
gameInfo1.friendGame = &gameInfo2; // 다른 회사의 게임 정보를 담은 변수 주소 저장
그림 9-8 구조체 안 구조체 포인터 선언