Union 은 다양한 자료형을 한대 묶어서사용하는, 구조체처럼 사용한다.
스트럭쳐는 내부에 데이터들이 각기 다른공간에 들어가있는 특징이 있다.
그러나 Union은 다양한 데이터가 하나의 데이터공간을 활용하여 연결되어있다.
코드 예시를 살펴보자.
구조체는 데이터의 가장 큰 사이즈로 데이터를 잡게 된다. 즉, 윗부분 구조체의 데이터가 1,4 이기 때문에
5가 되고 8이 들어가야하는데 8사이즈가 못들어가기 때문에, 다음줄 8바이트를 넣어서
8 ( 1 + 4 + 빈공간 3)
8 ( double)
이 되기떄문에 16바이트를 사용한다.
Union은 8바이트가 뜬다. 이친구는 구조체와 다르게 맴버 각각이 자신의 공간을 따로 사용하는것이 아니다.
한줄 에 따로
(8byte 전부 같이 사용함)
8byte 의 공간을 할당하고, 그 공간을 모든 변수가 공유하면서 사용하게 된다.
주소를 찍어보면 어떻게 나오는지 알아보자.
각기 구조체가 다른 주소값을할당받는것을 볼 수 있고
Union은 각기 같은 주소의 첫 값을 받아오는걸 볼 수 있다.
유니온에 데이터를 넣었을 때 어떤식으로 나오는지 확인해보자.
유니온에 각각 데이터를 입력하면 위와같이 나타나게 된다.
전값이 있더라도 더 상위의 데이터값이 들어가게 되면, 전 값의 위치데이터에 다른 값이 덮어씌워지기 때문에
전 값을 출력하더라도 이상한 값이 나오게 된다.
즉, Union에는 우선순위가 존재한다.
Union의 우선순위는 가장 최근의 값에 기반한다. 전 값은 덮어씌워진다. 라는 걸 알 수 있다.
유니온의 사용 예시를 살펴보자.
같은 데이터 공간을 사용해도 다른 데이터가 출력되는것 을 알 수 있다.
이렇게 사용함으로써 스트럭쳐와 다르게 데이터 공간을 절약 할 수 있다.
Enum을 사용할 수 있다. Enum은 define처럼 동작하는 별명부여 방식인데,
define과 다르게 내부의 데이터주소를 자동으로 부여해주는 기능이 있다. 예시를 살펴보자.
즉, enum은 define을 다른방식으로 사용할 수 있는것 임 을 알 수있고,
enum에 데이터를 입력하여 더 쉽게 별명을 지정하고 직관적으로 프로그래밍 할 수 있다.
'서울게임아카데미 교육과정 6개월 C++ ~ DirectX2D' 카테고리의 다른 글
16일차 30.dynamic_allocation 동적할당 (0) | 2023.03.31 |
---|---|
15일차 29. Function_pointer (0) | 2023.03.30 |
SGA 지식콘서트 (0) | 2023.03.24 |
13일차 25.Struct_Pointer,26.Radix, 헤더파일 만들기 (0) | 2023.03.24 |
12일차 22.Pointer, 23.Structure (0) | 2023.03.23 |