C++
[C++ 2-3] 구조체
KimKyao
2024. 9. 24. 21:46
#include <iostream>
#include <cstring>
using namespace std;
int main() {
// 구조체 : 다른 데이터형이 허용되는 데이터의 집합
// df) 배열 : 같은 데이터혈의 집합
/*
축구선수
string name;
string position;
int height;
int weight;
>> 데이터형이 다르다
*/
struct MyStruct // 구조체 이름
{
string name; // 맴버 선언
string position;
int height;
int weight;
} B; // 새로운 구조체를 선언하지 않아도 자동으로 만들어진다.
MyStruct A;
A.name = "Son";
A.position = "Striker";
A.height = 183;
A.weight = 77;
/*
아래 와 같이 초기화 방식도 가능
MyStruct A = {
"Son",
"Striker",
183,
77
}
*/
cout << A.name << endl;
cout << A.position << endl;
cout << A.height << endl;
cout << A.weight << endl;
B = {
}; // 빈 값들은 0으로 선언됨
cout << B.height << endl; // 0 출력
MyStruct C[2] = { // 구조체 역시 배열로 선언할 수 있다.
{"A", "A", 1, 1},
{"B", "B", 2, 2}
};
cout << C[0].height << endl;
return 0;
}
구조체란?
구조체(struct)는 다양한 데이터형을 하나의 집합으로 묶어 사용하는 자료형입니다. 일반적으로 배열은 같은 데이터형만 저장할 수 있지만, 구조체는 서로 다른 데이터형을 포함할 수 있다는 차이가 있습니다.
코드 분석
1. 구조체 정의
struct MyStruct {
string name;
string position;
int height;
int weight;
} B;
- struct MyStruct는 구조체의 이름이 MyStruct인 새로운 자료형을 정의하는 부분입니다.
- name, position은 string형이고, height, weight는 int형으로 구성됩니다.
- 구조체의 마지막에 B;가 선언되어 있는데, 이는 MyStruct라는 구조체 타입의 변수를 바로 생성하는 방식입니다. B라는 이름의 변수가 자동으로 만들어집니다.
2. 구조체 변수 사용
MyStruct A;
A.name = "Son";
A.position = "Striker";
A.height = 183;
A.weight = 77;
- A라는 MyStruct 타입의 변수를 선언한 후, 각각의 멤버 변수에 값을 할당합니다.
- A.name = "Son"과 같이 구조체 멤버에 접근할 때는 . 연산자를 사용합니다.
MyStruct A = {"Son", "Striker", 183, 77};
- 구조체를 선언하면서 동시에 초기화할 수도 있습니다. 이 방식으로 구조체의 멤버에 값을 한 번에 할당할 수 있습니다.
3. 구조체 배열
MyStruct C[2] = {
{"A", "A", 1, 1},
{"B", "B", 2, 2}
};
- 구조체는 배열로도 선언할 수 있습니다. C[2]는 MyStruct 타입의 구조체 2개를 담을 수 있는 배열을 선언한 것입니다.
- 배열의 각 요소는 { "A", "A", 1, 1 }와 같은 방식으로 초기화됩니다.
- 배열처럼 구조체 멤버에 접근할 때는 C[0].height와 같이 사용할 수 있습니다.
4. 구조체 초기값
B = {};
cout << B.height << endl; // 0 출력
- 구조체 B에 초기값을 제공하지 않으면 빈 값들은 기본적으로 0으로 초기화됩니다. 따라서 B.height는 0을 출력합니다.
구조체의 장점
- 데이터 그룹화: 관련된 데이터를 하나로 묶어 관리할 수 있어, 코드의 가독성이 높아지고 유지보수가 용이합니다.
- 다양한 데이터형 허용: 서로 다른 데이터형을 한꺼번에 다룰 수 있어, 실생활에 가까운 데이터를 모델링할 때 유용합니다.