/ C, PROGRAMMING, DATASTRUCTURE

C언어: 공용체 (Union)

다른 타입 변수가 같은 메모리 영역을 공유

문법은 구조체와 유사

초기화는 멤버 하나만 가능

쉽게 말해서 여러 가능한 타입 중 하나만 선택적으로 활성화가 되는 변수다.

활용) 공간 절약, 타입이 섞인 자료구조

union 내 structure

union 내의 여러 structre가 같은 타입, 같은 순서로 배치된 변수를 가질 때, 그 변수들은 동시에 정의 및 접근이 가능하다.

Union 단점 보완

  • 단점

    현재 어떤 타입의 값이 valid 한지 알기 힘듦

  • 해결법

    structure with an embedded union 사용함으로써 해결

typedef struct {
int kind;
union {
int i;
doue d;
} u;
} Number;

kind는 union이 사용할 멤버 타입을 명시한다.

여기서 kind 역할하는 변수를 tag field 라고 한다.