Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 공용체(Union) 완벽 이해하기: 개념, 문법, 예제까지

공용체(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라는 이름의 공용체를 정의하고, 이를 통해 datadata1이라는 두 개의 공용체 변수(객체)를 동시에 생성했습니다.

union Data {
    int i;
    float f;
}data, data1;

출력 결과의 "44"는 두 변수의 크기가 각각 4바이트임을 의미합니다. 대부분의 시스템에서 intfloat는 모두 4바이트이므로, 공용체의 크기는 가장 큰 멤버인 4바이트가 되는 것입니다. 만약 멤버 중 더 큰 자료형(예: double)이 포함된다면 공용체의 전체 크기는 그 자료형의 크기로 늘어나게 됩니다. 이처럼 공용체는 여러 멤버가 메모리를 공유하기 때문에 메모리 사용을 최적화해야 하는 임베디드 시스템 등에서 특히 유용하게 활용됩니다.