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}
};
'C++ > C++ 문법' 카테고리의 다른 글
| C++ 레퍼런스 변수 (참조 변수) (0) | 2025.10.13 |
|---|---|
| C++ 함수의 인자 전달 방식 (값, 참조, 주소) (0) | 2025.10.13 |
| C/C++ 메모리 구조 (0) | 2025.10.13 |
| C++ 동적 메모리 할당/해제 (new, delete) (0) | 2025.10.13 |
| C++ 정적 변수(static), 상수 변수(const) (0) | 2025.10.13 |