I. 구조체와의 차이
구조체는 멤버 변수마다 각각의 메모리를 할당해주지만, 공용체는 멤버 변수 중 가장 메모리 할당량이 큰 변수 하나의 공간만 할당되어 그 메모리 공간을 서로 공유한다.
II. 특징
메모리 공간을 공유하기 때문에 멤버 변수를 한번에 하나씩만 사용할 수 있다.
#include <stdio.h>
union person {
char name[20];
int age;
};
int main() {
union person p = {"LEE"}; //메모리를 공유하기에 첫번째 멤버 변수만 초기화 가능하다.
printf("%s\n", p.name);
p.age = 39; //한번에 하나의 멤버 변수만 할당할 수 있다.
printf("%d\n", p.age);
printf("%s\n", p.name); //지금은 age 변수가 할당돼있는 상태라 쓰레기 값이 출력된다.
return 0;
}
사용하기에 따라 메모리를 절약할 수 있지만 최근엔 하드웨어의 성능이 좋아져서 공용체를 잘 사용하지 않는다.
'컴퓨터 > C' 카테고리의 다른 글
C fopen, fclose 파일의 개방과 종료 (0) | 2022.10.31 |
---|---|
C 열거형 (0) | 2022.10.31 |
C typedef (0) | 2022.10.30 |
C 중첩된 구조체 (0) | 2022.10.30 |
C 문자열 조작 함수 (0) | 2022.10.25 |