공용체(Union)란 무엇인가?
공용체(Union)는 사용자가 직접 정의할 수 있는 데이터 타입(user-defined datatype)입니다. 공용체의 가장 큰 특징은 모든 멤버가 하나의 동일한 메모리 위치를 공유한다는 점입니다. 따라서 공용체의 전체 크기는 내부 멤버 중 가장 큰 멤버의 크기에 의해 결정됩니다. 두 개 이상의 멤버가 같은 메모리 공간을 함께 사용해야 하는 상황이라면 공용체가 가장 효율적인 선택입니다.
구조체와 공용체의 관계
공용체는 구조체(structure)와 매우 유사하게 동작합니다. 공용체 변수 역시 구조체 변수를 만드는 방식과 동일하게 선언할 수 있으며, 차이점이라면 C 언어에서 공용체를 정의할 때는 union이라는 키워드를 사용한다는 것뿐입니다.
공용체의 기본 문법(Syntax)
C 언어에서 공용체를 정의하는 문법은 다음과 같습니다.
union union_name {
member definition;
} union_variables;각 구성 요소의 의미는 아래와 같습니다.
- union_name − 공용체에 부여하는 임의의 이름입니다.
- member definition − 공용체를 구성하는 멤버 변수들의 집합입니다.
- union_variable − 해당 공용체로 생성되는 객체(변수)입니다.
공용체 활용 예제
다음은 C 언어에서 공용체를 실제로 사용하는 간단한 예제입니다.
예제 코드(Example)
#include <stdio.h>
#include <string.h>
union Data {
int i;
float f;
}data, data1;
int main( ) {
printf( "Memory size occupied by data : %d\t%d", sizeof(data), sizeof(data1));
return 0;
}
실행 결과(Output)
Memory size occupied by data : 44
예제 코드 해설
위 프로그램에서는 Data라는 이름의 공용체를 정의하고, 이를 통해 data와 data1이라는 두 개의 공용체 변수(객체)를 동시에 생성했습니다.
union Data {
int i;
float f;
}data, data1;출력 결과의 "44"는 두 변수의 크기가 각각 4바이트임을 의미합니다. 대부분의 시스템에서 int와 float는 모두 4바이트이므로, 공용체의 크기는 가장 큰 멤버인 4바이트가 되는 것입니다. 만약 멤버 중 더 큰 자료형(예: double)이 포함된다면 공용체의 전체 크기는 그 자료형의 크기로 늘어나게 됩니다. 이처럼 공용체는 여러 멤버가 메모리를 공유하기 때문에 메모리 사용을 최적화해야 하는 임베디드 시스템 등에서 특히 유용하게 활용됩니다.