공용체( union )
서로 다른 데이터형을 한 번에 한 가지만 보관할 수 있는 데이터 형식
(구조체는 int형과 double형을 한꺼번에 보관할 수 있지만, 공용체는 int형이나 double형 중에서 한번에 어느 하나만 보관할 수 있음)
구조체( struct )와 거의 동일하지만 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점이 다르다.
즉, 공용체( union )은 내부에 여러가지 타입의 멤버 변수를 선언하지만 실제 사용할 때에는 하나의 멤버 변수만 사용할 수 있다.
특징
- 한 번에 하나의 값만 보관할 수 있으므로, 가장 큰 멤버를 보관할 수 있을 만큼의 공간이 필요하다.(따라서 공용체의 크기는 가장 큰 멤버의 크기가 됨)
- 멤버 변수끼리 같은 메모리 공간을 공유하기 때문에 각 멤버들의 메모리 시작 주소가 동일하다. (따라서, 각 멤버 변수의 변화가 다른 멤버 변수에 영향을 끼침 / struct는 멤버 변수가 각각 다른 메모리 공간을 할당받음)
- 메모리 절약을 위해서 사용한다. (여러가지 데이터형을 사용할 수 있지만 이들을 동시에 사용할 수 없을 때)
열거체( enum )
#include <iostream>
using namespace std;
int main() {
//열거체( enum )
//기호 상수를 만드는 것에 대한 또 다른 방법
enum spectrum { red = 0, orange = 2, yellow = 4, green,
blue, violet, indigo, ultraviolet}; // 이런식으로 번호를 붙혀줄 수 있음. 마지막으로 붙혀준
yellow=4 이후에 번호들은 +1 씩 더해져 green은 5번이 됨
/*
1. spectrum을 새로운 데이터형 이름으로 만든다.
2. red, orange, yellow.. 0에서부터 7까지 정수 값을 각각 나타내는 기호 상수로
만든다. // 번호 지정해주기 전
*/
spectrum a = orange;
cout << a << endl;
>>> 2 (결과값) int b;
b = blue;
b = blue + 3;
cout << b << endl;
>>> 9 (결과값)
return 0;
}
위 내용은 '인프런 C++ 강의' 와 '티스토리 HyunZzang님의 union(공용체)에 대하여 정리한 글'의 일부를 정리한 내용입니다
'**Autonomous driving tech. > *C++' 카테고리의 다른 글
[C++] 11_조건문 ( if, else if ), 논리표현식 ( ||, && ) (0) | 2024.09.17 |
---|---|
[C++] 10_반복문 ( for , while ) (0) | 2024.09.16 |
[C++] 08_공용체( union )와 열거체 (2) | 2024.09.16 |
[C++] 07_구조체( struct ) (0) | 2024.09.16 |
[C++] 06_char형 배열과 string 배열의 차이점 (0) | 2024.09.16 |