본문 바로가기

C

[C언어] 구조체(Struct) | 구조체 포인터, typedef

반응형

 

 

 

 

토글

 

 

 


1. 구조체(Struct)란?

- 구조체는 C 프로그래밍에서 사용되는 사용자 정의 데이터 타입으로, 서로 관련된 여러 변수를 하나의 자료형으로 묶어서 표현하는 것을 말한다.

- 일반적으로 구조체를 사용하여 여러 개의 변수를 하나로 묶어서 코드의 가독성을 높이고, 데이터를 효율적으로 관리하는 데 사용된다.

- 구조체를 정의할 때는 struct 키워드를 사용하며, 각 변수들을 멤버로 가진다.

- 예를 들어, 게임 정보를 표현하는 구조체를 만든다면 게임의 이름, 발매년도, 가격, 제작사 등의 변수들을 멤버로 갖는 구조체를 선언할 수 있다.

struct GameInfo
{
    char *name;
    int year;
    int price;
    char *company;
};


- 위와 같이 struct 키워드를 사용하여 구조체를 정의한다.

- 이제 GameInfo`라는 자료형으로 게임 정보를 표현할 수 있다.

 

 

 


 

2. 구조체 사용하기

- 구조체를 정의한 후에는 구조체 변수를 선언하여 사용할 수 있다.

- 구조체 변수를 사용할 때는 . 연산자를 이용하여 각 멤버 변수에 접근한다.

- 예를 들어, 게임 정보 구조체를 선언한 후 해당 변수의 각 멤버에 값을 할당할 수 있다.

 

struct GameInfo GameInfo1; // 구조체 변수 선언
GameInfo1.name = "더킹게임";
GameInfo1.year = 2023;
GameInfo1.price = 500;
GameInfo1.company = "두슬회사";
반응형



- 위와 같이 구조체를 선언하고 멤버 변수들에 값을 할당할 수 있다.

- 또한 구조체를 배열처럼 초기화할 수도 있다.

struct GameInfo GameArray[2] = {
    {"더킹게임", 2023, 500, "두슬회사"},
    {"더퀸게임", 2023, 1000, "세슬회사"}};

 

 

 



3. 구조체 포인터

- 구조체 포인터는 구조체 변수의 주소를 가리키는 포인터 변수이다.

- 포인터를 이용하면 구조체 멤버에 더 쉽게 접근할 수 있다.

struct GameInfo *GamePtr; // 구조체 포인터 선언
GamePtr = &GameInfo1;    // 구조체 변수의 주소를 포인터에 저장

// 구조체 멤버에 접근하는 방법
printf("게임명: %s\n", GamePtr->name);
printf("발매년도: %d\n", GamePtr->year);
printf("가격: %d\n", GamePtr->price);
printf("제작사: %s\n", GamePtr->company);

 

 

 



4. 구조체 안에 구조체 사용

- 구조체 안에 다른 구조체를 멤버로 사용할 수 있다. 

struct GameInfo
{
    char *name;
    int year;
    int price;
    char *company;
    struct GameInfo *friendGame; // 연관 업체 게임
};

 

 

 


 

5. typedef를 이용한 구조체 별칭 설정


- typedef를 이용하여 구조체에 별칭을 지정할 수 있다.

- 이를 활용하면 보다 간결하고 가독성이 좋은 코드를 작성할 수 있다.

typedef struct GameInfo GAME_INFO;

// 사용 예시
GAME_INFO game;
game.name = "더프린스 게임";
game.year = 2022;


위와 같이 GAME_INFO라는 별칭을 사용하면, struct GameInfo를 사용하는 것보다 더 간단하게 구조체를 선언할 수 있다.


 

 

 

 

반응형