Backend/C, C++

구조체 개념

leecom116 2022. 4. 20. 12:23
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include <stdio.h>
 
struct Gameinfo {
    char* name;
    int year;
    int price;
    char* company;
 
    struct Gameinfo* friendGame; // 연관 업체 게임
};
 
 
typedef struct Gameinformation {
    char* name;
    int year;
    int price;
    char* company;
 
    struct Gameinfo* friendGame; // 연관 업체 게임
} GAME_INFO;
 
int main(void)
{
    // [게임 출시]
    // 이름 : 나도게임
    // 발매년도 : 2017년
    // 가격 : 50원
    // 제작사 : 나도회사
 
    char* name = "나도게임";
    int year = 2017;
    int price = 50;
    char* company = "나도회사";
 
    // [또다른 게임 출시]
    // 이름 : 너도게임
    // 발매년도 : 2017년
    // 가격 : 100원
    // 제작사 : 너도회사
 
    char* name2 = "너도게임";
    int year2 = 2017;
    int price2 = 100;
    char* company2 = "너도회사";
 
    // 구조체 사용
    struct Gameinfo gameinfo1; // struct Gameinfo(자료형) gameinfo1(변수)
    //struct Gameinfo
    gameinfo1.name = "나도게임";
    gameinfo1.year = 2017;
    gameinfo1.price = 50;
    gameinfo1.company = "나도회사";
 
    // 구조체 출력
    printf("-- 게임 출시 정보 --\n");
    printf("  게임명  : %s\n", gameinfo1.name);
    printf("  발매년도: %d\n", gameinfo1.year);
    printf("  가격    : %d\n", gameinfo1.price);
    printf("  제작사  : %s\n", gameinfo1.company);
 
    // 구조체를 배열처럼 초기화
    struct Gameinfo gameinfo2 = { "너도게임"2017100"너도회사" };
    printf("-- 또 다른 게임 출시 정보 --\n");
    printf("  게임명  : %s\n", gameinfo2.name);
    printf("  발매년도: %d\n", gameinfo2.year);
    printf("  가격    : %d\n", gameinfo2.price);
    printf("  제작사  : %s\n", gameinfo2.company);
 
    // 구조체 배열
    struct Gameinfo gameArray[2= {
        { "나도게임"201750"나도회사" },
        { "너도게임"2017100"너도회사" }
    };
    
 
 
    // 구조체 포인터
    struct Gameinfo * gamePtr; // 미션맨
    gamePtr = &gameinfo1;
    /*printf("\n\n-- 미션맨의 게임 출시 정보 --\n");
    printf("  게임명  : %s\n", (*gamePtr).name);
    printf("  발매년도  : %d\n", (*gamePtr).year);
    printf("  가격  : %d\n", (*gamePtr).price);
    printf("  제작사  : %s\n", (*gamePtr).company); */
    printf("  게임명  : %s\n", gamePtr->name);
    printf("  발매년도: %d\n", gamePtr->year);
    printf("  가격    : %d\n", gamePtr->price);
    printf("  제작사  : %s\n", gamePtr->company);
    
 
    // 연관 업체 게임 소개
    gameinfo1.friendGame = &gameinfo2;
    printf("\n\n-- 연관 업체의 게임 출시 정보 --\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);
 
    // typedef
    // 자료형에 별명 지정
    int i = 1;
    typedef int 정수;
    typedef float 실수;
    정수 정수변수 = 3// int i = 3;
    실수 실수변수 = 3.23f; // float f =3.23f;
    printf("\n\n정수변수 : %d, 실수변수 %.2f\n\n", 정수변수, 실수변수);
 
    typedef struct Gameinfo 게임정보;
    게임정보 game1;
    game1.name = "한글 게임";
    game1.year = 2015;
 
    GAME_INFO game2;
    game2.name = "한글 게임2";
    game2.year = 2014;
 
    struct Gameinformation game3;
    game3.name = "한글 게임3";
    return 0;
}
cs