구조체(Structuer)

서로 다른 타입의 변수들을 하나의 단위로 묶어 관리하는 사용자 정의 자료형

기본 구조

struct Student
{
    string name;
    int age;
};  // 세미콜론 필수

Student s1;

s1.name = "철수";
s1.age = 10;

Student s2 = { "영희", 11 };

Student s3 = {};    // 모든 멤버를 기본값으로 초기화

C언어에서의 구조체

C언어에서는 구조체 변수를 만들 때 매번 struct를 붙이기 번거로워 typedef를 사용했음

// C언어에서 정석적인 구조체 선언
struct Student
{
    string name;
    int age;
};

struct Student s1;  // 반드시 struct를 붙여야 함

// C언어에서 흔히 쓰는 방식
typedef struct
{
    string name;
    int age;
} Student;  // struct Student 대신 Student만 써도 됨

Student s2; // C++에서는 typedef 없이도 이렇게 쓸 수 있어 사용 빈도가 줄었음

구조체 패딩(Struct Padding)

구조체의 실제 크기는 멤버 변수 크기의 단순 합계보다 클 수 있음