공용체란?
: 같은 메모리 영역을 여러 개의 변수가 공유해서 사용하는 것이다. 즉, int i가 특정 메모리 영역을 사용하면 char c는 해당 영역을 사용할 수 없다.
union example {
char c; // 같은 기억 공간 공유
int i; // 같은 기억 공간 공유
};
#include <stdio.h>
union example {
int i;
char c;
};
int main(void)
{
union example data;
data.c = 'A';
printf("data.c:%c data.i:%i\n", data.c, data.i);
data.i = 10000;
printf("data.c:%c data.i:%i\n", data.c, data.i);
//data.c:A data.i:-858993599
//data.c: data.i : 10000
}
이렇게 하나의 변수가 메모리를 사용했을 때 다른 변수를 출력하면 쓰레기 값과 같은 필요없는 값이 나온다.
또한 공용체에 할당되는 메모리의 크기는 가장 큰 멤버의 자료형으로 결정된다. 위의 코드에서는 int가 4byte로 가장 크기때문에 공용체에 할당되는 메모리의 크기는 4byte이다.
'2학년 2학기 > c언어' 카테고리의 다른 글
11-9장 typedef (1) | 2024.11.12 |
---|---|
11-8장 열거형 (0) | 2024.11.12 |
11-6장 구조체와 포인터 (0) | 2024.11.11 |
11-5장 const struct (0) | 2024.11.11 |
11-4장 구조체와 함수 (0) | 2024.11.11 |