제대로 접근했는지 게임 정보를 출력해서 확인해 볼까요? 앞에서 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;
}
실행결과 |
-- 다른 회사의 게임 출시 정보 -- 게임 이름 : 너도게임 발매 연도 : 2022 게임 가격 : 100 제작 회사 : 너도회사 |
실행결과를 보면 ‘너도회사’의 게임 정보가 나오는 것을 확인할 수 있습니다. gameInfo1.friendGame이 가리키는 곳이 gameInfo2이므로 gameInfo2의 정보에 접근해 출력할 수 있습니다.