더북(TheBook)

제대로 접근했는지 게임 정보를 출력해서 확인해 볼까요? 앞에서 gamePtr->name과 같이 구조체 포인터에서 화살표를 사용해 출력하는 방법을 배웠으니 이번에는 화살표를 사용해 보겠습니다. 구조체 포인터는 gameInfo1.friendGame이므로 주소의 값을 표시하는 부분을 gameInfo1.friendGame->name과 같이 작성합니다.

9.3.2 구조체안의구조체.c

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

int main(void) {
    struct GameInfo gameInfo1; 
    gameInfo1.name = "나도게임";
    gameInfo1.year = 2022;
    gameInfo1.price = 50;
    gameInfo1.company = "나도회사";
    struct GameInfo gameInfo2 = { "너도게임", 2022, 100, "너도회사" };
    gameInfo1.friendGame = &gameInfo2;
    printf("-- 다른 회사의 게임 출시 정보 --\n");
    printf("게임 이름 : %s\n", gameInfo1.friendGame->name);
    printf("발매 연도 : %d\n", gameInfo1.friendGame->year);
    printf("게임 가격 : %d\n", gameInfo1.friendGame->price);
    printf("제작 회사 : %s\n", gameInfo1.friendGame->company);
    return 0;
}

실행결과 icon_con

-- 다른 회사의 게임 출시 정보 --
게임 이름 : 너도게임
발매 연도 : 2022
게임 가격 : 100
제작 회사 : 너도회사

실행결과를 보면 ‘너도회사’의 게임 정보가 나오는 것을 확인할 수 있습니다. gameInfo1.friendGame이 가리키는 곳이 gameInfo2이므로 gameInfo2의 정보에 접근해 출력할 수 있습니다.

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