신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

공용체 (union)

공용체는 구조체와 비슷한 자료형이다.

하지만, 메모리공간을 절약할 수 있다는 차이가 존재한다.

 

 

어떻게해서 메모공간을 절약할까?

 

공용체는 메모리크기가 가장 큰 자료형의 공간을 공유하는 자료형이다.

 

 

 

예를들어, char c; int i; double d; 3가지 자료형이 있다고 하자.

 

 

각각의 자료형은 1byte, 4byte, 8byte라는 메모리크기를 갖는다. 그렇다면 총 13byte의 크기를 갖게 된다.

 

 

 

 

하지만, 공용체의 경우는 조금 다르다. 가장큰 자료형인 double(8byte)를 공유하기 때문에 총 8byte의 크기를 갖게 된다.

 

 

이렇게 메모리 공간을 절약할 수 있다는 장점이 있다.

 

 

 

장점이 있다면 단점이 있듯이, 공용체는 메모리를 공유하고 있기 때문에 다른 자료형에 간섭을 하게 된다.

그래서 데이터 값을 변경을 하게 되면 다른 데이터도 변하게 된다는 단점이 있다.

 

#include <stdio.h>
 
union uni
{
    int a;
    int b;
};
 
int main(void) {
    union uni u;
    
    // a만 선언한다.
    u.a = 10;
    printf("u.a = %d\n", u.a);
    printf("u.b = %d\n", u.b);
    printf("a만 선언했지만, b에도 같은 10이 들어가 있는것을 알 수 있다.\n");
    printf("메모리를 공유하고 있기 때문에!!\n\n");
 
    // b를 선언한다.
    u.b = 20;
    printf("u.a = %d\n", u.a);
    printf("u.b = %d\n", u.b);
    printf("b만 20으로 선언했지만 a에도 20이 들어가는것을 알 수 있다.\n");
    printf("이렇게 다른 자료형의 데이터값에도 영향을 준다.\n\n");
    
    // size를 확인해보자
    printf("sizeof(union uni) = %d\n", sizeof(union uni));
 
    return 0;
}​

 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기