struct를 이용하여 새로운 자료형을 만들어
그 자료형 내에 다양한 자료형을 활용할 수 있다.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
struct Eyesight {
float left;
float right;
};
struct Person {
float height;
float weight;
char name[10];
short grade;
Eyesight eyesight;
};
Person person1 = {
172.8,
58.2,
"Ryu",
3,
{0.1,
0.12}
};
// Person이라는 구조체 자료형을 person이라는 이름으로 선언
Person person2 = person1;
// 대입해서 복사하는 것이 가능함.
cout << "키 : " << person2.height << endl;
cout << "몸무게 : " << person2.weight << endl;
cout << "이름 : " << person2.name << endl;
cout << "등급 : " << person2.grade << endl;
cout << "왼쪽 시력 : " << person2.eyesight.left << endl;
cout << "오른쪽 시력 : " << person2.eyesight.right << endl;
Person persons[5];
// 배열 사용가능
persons[0].grade = 2;
cout << "persons[0]의 등급 : " << persons[0].grade << endl;
Person& human = persons[1];
human.grade = 4;
// 참조자를 사용하여 persons[1]의 정보를 가져옴
cout << "human의 등급 : " << human.grade << endl;
cout << "persons[1]의 등급 : " << persons[1].grade << endl;
return 0;
}
키 : 172.8
몸무게 : 58.2
이름 : Ryu
등급 : 3
왼쪽 시력 : 0.1
오른쪽 시력 : 0.12
persons[0]의 등급 : 2
human의 등급 : 4
persons[1]의 등급 : 4
구조체는 구조체안의 자료형 중에 가장 큰 크기를 가진 자료형의 크기로 메모리 layout을 분배하며
그 과정에서 1번째 자료형의 크기와 2번째 자료형의 크기가 서로 맞지 않을 때 ex) int, float 버리는 공간이 생긴다.