공용체는 여러 개의 멤버 중에서 하나의 멤버의 값만을 사용하는 사용자 정의 형식이예요.
공용체를 정의하는 것은 구조체와 비슷해요.
공용체를 정의할 때는 struct 키워드 대신 union을 사용하세요.
공용체는 구조체와 다르게 모든 멤버마다 별도의 메모리를 부여하지 않고 메모리가 제일 큰 멤버 크기의 메모리만 할당해요.
unio [태그명]
{
[멤버 형식] [멤버 이름];
... 중략 ...
};
◈ 공용체와 구조체의 메모리 크기 비교
#include <stdio.h>
struct _SDemo
{
int a; int b;
};
union _UDemo
{
int a; int b;
};
int main()
{
printf("struct _SDemo 크기: %d\n",
sizeof(struct _SDemo));
printf("union _UDemo 크기: %d\n",
sizeof(union _UDemo));
return 0;
}
◈ 실행 결과
struct _SDemo 크기: 8
union _UDemo 크기: 4
공용체는 멤버마다 별도의 메모리를 부여하지 않아서 하나의 멤버의 값을 변경하면 다른 멤버의 값은 의미가 없어요.
따라서 공용체는 한 순간에 하나의 멤버의 값만 유효하죠.
◈ 공용체의 하나의 멤버를 변경하면 다른 멤버의 값에 영향
#include <stdio.h>
typedef union _Demo Demo;
union _Demo
{
int i;
float f;
};
int main()
{
Demo d;
d.i = 90;
printf("d.i: %10d d.f:%0.2f\n", d.i, d.f);
d.f = 1.0;
printf("d.i: %10d d.f:%0.2f\n", d.i, d.f);
d.i = 2;
printf("d.i: %10d d.f:%0.2f\n", d.i, d.f);
return 0;
}
◈ 실행 결과
d.i:
90 d.f:0.00
d.i: 10653532 d.f:2.00
d.i:
2 d.f:0.00
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[C언어] 80. 사용자 정의 형식 실습 - 테스트 (0) | 2016.04.17 |
---|---|
[C언어] 79. 사용자 정의 형식 실습 - 기능 구현 (0) | 2016.04.17 |
[C언어] 78. 사용자 정의 형식 실습 - 형식 정의 (0) | 2016.04.17 |
[C언어] 77. 사용자 정의 형식 실습 - 시나리오 (0) | 2016.04.17 |
[C언어] 76. 열거형 (0) | 2016.04.17 |
[C언어] 74. 구조체 (0) | 2016.04.17 |
[C언어] 73. 문자열 정리하기 (0) | 2016.04.17 |
[C언어] 72. 문자열 복사 (0) | 2016.04.17 |
[C언어] 71. 문자열 비교와 strcmp 함수 (0) | 2016.04.17 |
[C언어] 70. 문자열 길이와 strlen 함수 (0) | 2016.04.17 |