공용체는 구조체와 달리 각 멤버들이 메모리 위치를 공유합니다.
공용체를 생성할 때는 앞에 union을 붙입니다.
union A {
short a;//위치 0바이트
int b;//위치가 2바이트가 아니라 0바이트 입니다.
};
A a;
a.a = 4;
a.b = 8;//a와 b맴버는 같은 메모리 위치에 있으므로 a의 값도 바뀌게 됩니다.
공용체의 크기는 공용체의 각 멤버들 중 가장 큰 멤버의 크기가 됩니다.
공용체의 이름을 지정하지 않을 수 있는데 이러면 각 멤버를 변수 생성해서 접근하는 것이 아니라 그냥 접근할 수 있습니다.
union {
int c;
unsigned d;
};
c=-3;
d=5;
추가 : 공용체도 구조체와 마찬가지로 C언어에서는 공용체 변수를 정의할 때 앞에 union을 붙여야합니다.