본문 바로가기

컴퓨터/C

C 공용체

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