프로그래밍 언어/C

공용체(Union)

gcreators 2024. 8. 20. 17:24
#include<stdio.h>

union UMemory
{
    char c;
    int i;
    double d;
};

void main()
{
    //공용체(Union)
    union UMemory mem;
    printf("mem: %p\n", &mem);

    mem.c = 'a';
    printf("mem.c: %c (%p)\n", mem.c, &mem.c);
    mem.i = 123;
    printf("mem.i :%d (%p)\n", mem.i, &mem.i);
    mem.d = 3.14;
    printf("mem.d: %lf (%p)\n", mem.d, &mem.d);
    printf("mem.i :%lf (%p)\n", mem.i, &mem.i);
    printf("mem.d: %d (%p)\n", mem.d, &mem.d);
    printf("mem.i :%d (%p)\n", mem.i, &mem.i);

    printf("mem Size: %d byte\n", sizeof(mem));


}

공용체는 구조체와 비슷하지만

메모리 공간을 하나만 만들어 공유하는 특징을 지니고 있다

그래서 윗 예시처럼

값을 입력 해서 사용 후 다른 값을 입력한다면 새로 입력한 값이 저장되는 구조이다.

 

거의 사용되지 않지만 메모리 공간을 효율적으로 이용할 수 있기에 알아두고 필요시 활용을 하면 좋은 프로그램이 될 것이다.