공용체형의 원리 이해하기
공용체 (union data type)라는 형은, 구조체형과 그 스타일이 매우 흡사한 사용자 정의형이다.
공용체형의 선언
union 공용체형명
{
형명 식별자;
형명 식별자;
....
};
공용체형의 구문은 구조체형과 매우 비슷하다. struct 키워드 대신에 union 키워드를 사용하면 된다!
공용체 또한 공용체형 변수를 선언해서 값을 저장할 수 있다.
단, 공용체형의 모든 멤버는 저장 공간을 공유하므로
-공용체에는 값을 한번에 하나만 저장시킬 수 있다.-
라는 특징이 있다. 다음 코드를 통해 확인해 보자.
이 코드에는 공용체형 union Year가 새롭게 선언되어서 형으로 사용되고 있다.
또한, 공용체형 변수 myyear을 선언한 후, myyear에 접근하고 있다.
코드의 실행 결과를 주의깊게 살펴보면, 공용체의 멤버 ad와 dangi를 통해서
-공용체에는 단 하나의 값만 저장할 수 있다.-
는 사실을 확인할 수 있다.
공용체의 멤버 중 하나의 값만 바꾸어도, 다른 멤버의 값이 동일하게 바뀐다. 공용체의 멤버들은 공용체가 점유한 모든 메모리의 위치를 공유하며, 같은 위치에 값을 저장한다. 따라서, ad에 값을 대입했음에도 dangi의 값이 ad와 같아져 버린 것이다. 반대로, dangi에 값을 대입하면 ad의 값이 dangi와 같아져 버린다.
이처럼 공용체는 제한된 메모리를 절약해서 사용할 수 있도록 만들어졌다.
<다양한 형>
기본형
1) 논리형
2) 문자형
3) 정수형
4) 부동소수점형
사용자정의형
1) 열거형
2) 구조체형
3) 공용체형
4) 클래스
포인터형(*)
배열형([])
참조형(&)
'C++ 코딩 > C++ 기초개념' 카테고리의 다른 글
C++ 반복자 Iterator (0) | 2022.11.06 |
---|---|
C++ Operator Overloading 연산자 오버로딩 (0) | 2022.09.26 |
STL 표준 템플릿 라이브러리 (Standard Template Library) (0) | 2022.04.01 |
<C++ 기초> 구조체 struct, 구조체 응용(*포인터 인수로 사용하기) (0) | 2021.02.24 |
<C++ 기초> 클래스 Class의 기본 - 맴버, 멤버함수, private, public, protect, 캡슐화 (1) | 2021.02.24 |
<C++ 기초> 식과 연산자, 연산자의 종류와 우선순위 (0) | 2021.02.23 |
<C++ 기초> 동적배열, sti vector, 멤버함수 (0) | 2021.02.18 |
<C++ 기초> typedef, 열거형 enum (0) | 2021.02.16 |