하나의 공간(메모리)을 서로 다른 두 변수가 같이 사용하는 것이다.
공용체는 순서가 규칙적이지 않고, 미리 알 수 없는 다양한 타입의 데이터를 저장할 수 있도록 설계된 타입이다.
양자 역학인가;;
공용체를 사용하는 방법은 구조체와 거의 비슷하다.
차이점은 구조체의 경우 멤버 변수 각각에 별도의 공간을 할당하는 반면 공용체에서는 멤버 변수가 공간을 공유한다는 것.
union 공용체형_이름{
데이터_형식 멤버_변수_1;
데이터_형식 멤버_변수_2;
.
.
.
};
union 공용체형_이름 공용체_변수;
#include<stdio.h>
void main(){
union student{
int tot;
int grade;
};
union student u;
u.tot = 300;
u.grade = 'A';
printf("\n--- 공용체 활용 ---\n");
printf("총점 ==> %d\n",u.tot);
printf("등급 ==> %c\n",u.grade);
}
300 이어야 하는 게 321이 됐다.공용체 멤버 변수가 여러 개 일 때는 그중 가장 큰 저장공간이 공용체의 크기가 된다.
300이 들어간 4바이트 중 첫번째 바이트에 A(아스키 코드 65)가 들어가면서 값이 이상해진거다.