프로그래밍 지식/C++

C++문법/ 공용체, Union (메모리 절약 가능)

게임이 더 좋아 2021. 11. 9. 23:14
반응형
728x170

 

구조체랑 비슷하지만 다르다.

 

쉽게 말하자면 Type을 여러개 가지고 있는 변수라고 생각하면 되겠다.

 

union one4all
{
    int int_val;
    long long_val;
    double double_val;
};

//구조체와 선언 방법이 비슷하다.

 

다만 one4all 이라는 공용체 자체는 한 번에 하나의 타입만 가질 수 있다.

int의 값도 저장, long 값도 저장, double의 값도 저장하지만 한 번에 하나의 상태만 가진다.

공용체의 크기는 해당 타입 중에서 가장 큰 타입의 공간만큼 차지한다.

long이 제일크다면 long의 크기를 가지는 공용체가 되는 것이다.

 

**다시 말하면 이 공용체는 여러 가지 데이터를 쓰게되지만

이들을 동시에 사용할 일은 없을 때 메모리를 절약해주는 역할이다.

 

예를 들어 1번 부품이 있고 하위 부품은 1.1이라고 할 때

부품 번호가 1도 되고 1.1도 되어야 할 때

int num1

float num1

두 변수를 그냥 계속 구조체에 가지고 있는 것보다

둘 중 하나의 큰 변수에 대해서 공용체를 만들어서 메모리를 절약하는 방법이다.

아래와 같은 느낌이다.

int + float > max(int, float)

 

 

728x90
반응형
그리드형