더북(TheBook)

9.3.2 구조체 안에 구조체 사용하기

구조체 포인터를 사용해 구조체 안에 똑같이 생긴 구조체를 다시 한번 정의할 수 있습니다. 예를 들어, ‘나도회사’에서 자사 게임 정보를 소개하면서 ‘너도회사’에서 만든 게임 정보도 같이 소개한다고 해 봅시다.

앞에서 정의한 GameInfo 구조체의 마지막 멤버로 다음과 같이 friendGame을 추가로 선언합니다. friendGame은 구조체 GameInfo의 구조체 변수를 가리키는 구조체 포인터로, 구조체 안에 있는 또 다른 구조체를 가리키는 역할을 합니다.

9.3.2 구조체안의구조체.c

struct GameInfo {
    char * name;
    int year;
    int price;
    char * company;
    struct GameInfo * friendGame; // 구조체 포인터 
};

friendGameGameInfo 구조체의 5번째 멤버이면서 포인터 변수입니다. 따라서 ‘나도회사’ 정보를 가진 gameInfo1 변수로 friendGame 멤버에 접근할 수 있습니다. 그리고 ‘너도회사’ 정보를 가진 gameInfo2 변수의 주소를 저장하면 gameInfo1.frendGamegameInfo2를 가리키게 되어 다른 회사의 게임 정보도 접근할 수 있습니다.

gameInfo1.friendGame = &gameInfo2; // 다른 회사의 게임 정보를 담은 변수 주소 저장

그림 9-8 구조체 안 구조체 포인터 선언

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.