C
공용체
유로 청년
2024. 6. 20. 15:20
1. 공용체는 무엇인가?
- 공용체의 선언 방식은 구조체와 동일하나, 구조체는 메모리상에 모든 맴버들을 저장하기 위한 공간을 마련하지만, 공용체인 경우에는 모든 맴버들이 하나의 저장 공간을 공유하며, 사용한다.
- 공용체의 기본 형태는 다음과 같다.
// 공용체 선언
union student {
int stduent_id;
double grade;
};
2. 모든 맴버들이 하나의 저장 공간을 공유한다면, 동시에 여러 맴버들을 저장할 수 있는가?
- 공용체에서는 맴버들이 하나의 저장 공간을 공유하면 저장하기 때문에 동시에 여러 맴버들의 데이터들을 저장할 수 없다.
- 따라서 하나의 맴버 값이 저장 공간에 저장되어 있는 상태에서 다른 맴버값이 저장된다면 기존의 맴버 데이터 값에다가 덮어씌우기 형태로 저장된다.
- 따라서 모든 맴버들이 하나의 저장 공간을 공유한다는 점에서 메모리가 절약되지만, 동시에 여러 맴버들의 값을 저장할 수 없다는 단점을 갖는다.
3. 공용체의 규칙
3.1) 공용체의 변수 크기는 맴버들 가운데에서 가장 크기가 큰 맴버가 기준이 된다.
union MyUnion {
float a,
double b,
int c,
char d[5] };
- 위와 같이 서로 다른 자료형을 갖는 맴버들이 존재한다면, double 형이 8byte로 가장 크기 때문에 공용체의 크기는 8byte를 갖는다.
3.2) 공용체 변수의 초기화는 중괄호를 사용해 첫 번째 맴버만 초기화한다.
- 공용체는 동시에 여러 맴버들의 값을 저장할 수 없기 때문에 공용체의 초기화는 첫 번재 맴버만 초기화하거나 맴버 접근 연산자를 통해 직접 지정해야 한다.