본문 바로가기
C++/C++ 문법

C++ 구조체 (struct)

by Sein_ 2025. 10. 13.
728x90

[Do it C++ 완전정복_ 125~126, 128~129p]

구조체 (struct)

서로 다른 자료형을 하나의 이름으로 묶어 관리할 수 있게 해주는 사용자 정의 자료형

구조체는 메모리에 연속으로 할당된다.

 

구조체 정의

  • struct 키워드로 선언하며, 멤버 변수는 {} 안에 정의
  • 끝에는 반드시 세미콜론(;) 을 붙입니다.
struct Person {
    string name;
    int age;
};

 

구조체 변수 선언 및 멤버 접근

  • 구조체 형식 변수 선언은 일반적인 변수 선언과 같다.
  • 구조체 변수는 . 연산자로 멤버에 접근한다.
  • 구조체 포인터는 -> 연산자로 멤버에 접근한다. (*포인터).멤버 == 포인터->멤버 
#include <iostream>
using namespace std;

int main() {
    Person p1;           // 구조체 변수 선언
    p1.name = "홍길동";   // 멤버 변수 접근 (.)
    p1.age = 25;

    cout << "이름: " << p1.name << ", 나이: " << p1.age << endl;

    Person* ptr = &p1;   // 구조체 포인터
    cout << "포인터 접근 → 이름: " << ptr->name
         << ", 나이: " << ptr->age << endl;   // -> 사용
}

 

구조체 배열 선언

  • 같은 형태의 구조체 여러 개를 한 번에 관리할 수 있다.
  • 각 요소는 독립적인 구조체 변수처럼 사용된다.
Person people[3];   // 구조체 배열 선언

people[0].name = "이순신";
people[0].age  = 30;

people[1].name = "강감찬";
people[1].age  = 40;

 

 

구조체 초기화

  • 선언과 동시에 {} 로 초기화할 수 있다.
  • C++20 이상에서는 .멤버 = 값 형태의 지정자 초기화도 지원한다.
// 구조체 변수 초기화
Person p1 = {"A", 25};                     // 위치 기반 초기화
Person p2 = {.name = "A", .age = 30};     // 지정자 초기화 (C++20 이상)

// 구조체 배열 초기화
Person people[3] = {
    {"A", 25},
    {"B", 30},
    {"C", 40}
};