C++ 복합 데이터 - 구조체

진경천·2023년 9월 11일
0

C++

목록 보기
12/90

구조체 struct

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 버리는 공간이 생긴다.

profile
어중이떠중이

0개의 댓글