Tech Blog/C and C++
C언어 - 구조체 (structure)
EXPRESSIONS HAVE POWER
2021. 6. 13. 01:24
1. 구조체 사용 및 출력
#include <stdio.h>
struct GameInfo {
char * name;
int year;
int price;
char * company;
char * name2;
int year2;
int price2;
char * company2;
};
int main(){
// 구조체 사용
struct GameInfo gameInfo1;
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 = {"너도게임", 2017, 100, "너도회사"};
printf("-- 또 다른 게임 출시 정보 --\n");
printf(" 게임명 : %s\n", gameInfo2.name);
printf(" 발매년도 : %d\n", gameInfo2.year);
printf(" 게임가격 : %d\n", gameInfo2.price);
printf(" 회사명 : %s\n", gameInfo2.company);
return 0;
}
실행결과
-- 게임 출시 정보 --
게임명 : 나도게임
발매년도 : 2017
게임가격 : 50
회사명 : 나도회사
-- 또 다른 게임 출시 정보 --
게임명 : 너도게임
발매년도 : 2017
게임가격 : 100
회사명 : 너도회사
2. 구조체 배열
#include <stdio.h>
struct GameInfo {
char * name;
int year;
int price;
char * company;
};
int main(){
// 구조체 배열
struct GameInfo gameArray[2] = {
{"나도게임", 2017, 50, "너도회사"},
{"너도게임", 2017, 100, "너도회사"}
};
printf("-- 구조체 배열 기본 출력 게임 출시 정보 --\n");
printf("%s\n",gameArray[0].name);
printf("%d\n",gameArray[0].year);
printf("%d\n",gameArray[0].price);
printf("%s\n",gameArray[0].company);
printf("\n\n%s\n",gameArray[1].name);
printf("%d\n",gameArray[1].year);
printf("%d\n",gameArray[1].price);
printf("%s\n",gameArray[1].company);
printf("\n\n-- 구조체 배열 다르게 출력 게임 출시 정보 --\n");
printf("%s\n",gameArray->name);
printf("%d\n",gameArray->year);
printf("%d\n",gameArray->price);
printf("%s\n",gameArray->company);
return 0;
}
실행결과
-- 구조체 배열 기본 출력 게임 출시 정보 --
나도게임
2017
50
너도회사
너도게임
2017
100
너도회사
-- 구조체 배열 다르게 출력 게임 출시 정보 --
나도게임
2017
50
너도회사
- 이걸로 (->) 두번째 줄은 그대로 출력 어떻게함..?
3. 구조체 포인터 사용 + 구조체 안의 구조체
#include <stdio.h>
struct GameInfo {
char * name;
int year;
int price;
char * company;
struct GameInfo * friendGame; // 연관 업체 게임
};
int main(void)
{
// 구조체 사용
struct GameInfo gameInfo1;
gameInfo1.name="나도게임";
gameInfo1.year=2017;
gameInfo1.price=50;
gameInfo1.company="나도회사";
struct GameInfo gameInfo2 = {"너도게임", 2017, 100, "너도회사"};
// 구조체 포인터
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("\n\n-- 미션맨의 게임 출시 정보 --\n");
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);
}
실행결과
-- 미션맨의 게임 출시 정보 --
게임명 : 나도게임
발매년도 : 2017
가격 : 50
제작사 : 나도회사
-- 미션맨의 게임 출시 정보 --
게임명 : 나도게임
발매년도 : 2017
가격 : 50
제작사 : 나도회사
-- 미션맨 친구의 게임 출시 정보 --
게임명 : 너도게임
발매년도 : 2017
가격 : 100
제작사 : 너도회사
4. typedef
#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()
{
int i = 1;
typedef int 정수;
typedef float 실수;
정수 정수변수 = 3; // int i = 3
실수 실수변수 = 3.23f; // float f = 3.23f
printf("정수변수 : %d, 실수변수 % 2f\n\n", 정수변수, 실수변수);
typedef struct GameInfo 게임정보;
게임정보 game1;
game1.name = "한글게임";
game1.year = 2015;
GAME_INFO game2;
game2.name="한글게임2";
game2.year=2012;
printf("게임 이름 : %s, 발매연도 : %d\n\n", game1.name, game1.year);
printf("게임 이름 : %s, 발매연도 : %d\n", game2.name, game2.year);
}
실행결과
정수변수 : 3, 실수변수 3.230000
게임 이름 : 한글게임, 발매연도 : 2015
게임 이름 : 한글게임2, 발매연도 : 2012