c++/기초

구조체

코드망령 2026. 5. 29. 17:59

구조체 (Struct)

구조체는 서로 다른 자료형의 변수들을 하나로 묶어 새로운 자료형을 만드는 사용자 정의 자료형(User Defined Type)이다.

관련된 데이터를 하나의 단위로 관리할 수 있도록 도와준다.


구조체 선언

기본 문법

struct 구조체이름
{
    자료형 변수이름;
    자료형 변수이름;
};

예시

struct Player
{
    string Name;
    int HP;
    int Attack;
};

이제 Player는 새로운 자료형이 된다.


구조체 변수 선언

Player player;

값 저장

player.Name = "용사";
player.HP = 100;
player.Attack = 20;

출력

cout << player.Name << endl;
cout << player.HP << endl;

구조체 초기화

Player player =
{
    "용사",
    100,
    20
};

또는

Player player{ "용사", 100, 20 };

구조체 배열

구조체는 배열로 선언할 수 있다.

기본 문법

구조체이름 변수이름[크기];

예시

Player players[3];

값 저장

players[0].Name = "전사";
players[1].Name = "마법사";
players[2].Name = "궁수";

구조체 포인터

구조체는 포인터로 사용할 수 있다.

기본 문법

구조체이름* 변수이름;

예시

Player player;

Player* ptr = &player;

구조체 포인터 접근

일반 변수

player.HP = 100;

접근 연산자 . 사용


포인터

ptr->HP = 100;

접근 연산자 -> 사용


접근 연산자

. (멤버 접근 연산자)

구조체 변수를 사용할 때 사용한다.

Player player;

player.HP = 100;

-> (포인터 멤버 접근 연산자)

구조체 포인터를 사용할 때 사용한다.

Player* ptr = &player;

ptr->HP = 100;

아래 코드와 동일하다.

(*ptr).HP = 100;

구조체 안에 함수 선언

C++에서는 구조체 안에 함수를 선언할 수 있다.

struct Player
{
    string Name;
    int HP;

    void PrintInfo()
    {
        cout << Name << endl;
        cout << HP << endl;
    }
};

사용

Player player;

player.Name = "용사";
player.HP = 100;

player.PrintInfo();

구조체 생성자

구조체도 생성자를 가질 수 있다.

struct Player
{
    string Name;
    int HP;

    Player()
    {
        Name = "Unknown";
        HP = 100;
    }
};

사용

Player player;

구조체와 클래스의 차이

struct Player
{
    int HP;
};
class Player
{
    int HP;
};

차이점

항목 struct class
기본 접근 지정자 public private
상속 기본 지정자 public private

struct

struct Player
{
    int HP;
};

Player player;
player.HP = 100;

기본이 public


class

class Player
{
    int HP;
};

Player player;
player.HP = 100; // 오류

기본이 private


구조체 사용 예시

플레이어 정보

struct Player
{
    string Name;
    int HP;
    int MP;
    int Attack;
};

아이템 정보

struct Item
{
    string Name;
    int Price;
    int Quantity;
};

몬스터 정보

struct Monster
{
    string Name;
    int HP;
    int Damage;
};

구조체의 장점

  • 관련된 데이터를 하나로 묶을 수 있다.
  • 코드의 가독성이 좋아진다.
  • 배열, 포인터, 함수와 함께 사용할 수 있다.
  • 새로운 자료형을 만들 수 있다.
  • C++에서는 함수와 생성자도 포함할 수 있다.

정리

  • 구조체는 여러 자료형을 하나로 묶어 새로운 자료형을 만드는 기능이다.
  • struct 구조체이름 { ... }; 형태로 선언한다.
  • 구조체 변수는 . 연산자로 멤버에 접근한다.
  • 구조체 포인터는 -> 연산자로 멤버에 접근한다.
  • 구조체 배열을 만들 수 있다.
  • 구조체 포인터를 사용할 수 있다.
  • C++에서는 함수와 생성자를 포함할 수 있다.
  • structclass의 가장 큰 차이는 기본 접근 지정자(public / private)이다.

'c++ > 기초' 카테고리의 다른 글

전역변수와 지역변수  (0) 2026.05.29
함수  (0) 2026.05.29
배열  (0) 2026.05.29
반복문  (0) 2026.05.29
switch  (0) 2026.05.29