프로그래밍 언어/C언어

C언어 공용체(union)에 대해 알아보기입니다.

원원 2017. 9. 13. 08:48

안녕하세요. 오늘은 C언어 공용체 (union)에 대해 알아볼 것 입니다.

공용체란 멤버변수끼리 메모리를 공유하는 것 입니다. 메모리를 공유하면 메모리를 아낄 수 있는 장점이 있는 반면, 다른 멤버변수에 값을 넣으면 기존의 값은 지워지게 됩니다.


공동체를 선언하는 방법은 구조체와 같습니다.

union 변수명 {멤버목록};


1
2
3
4
5
6
union data
{
    int age;
    int score;
    char class;
};
cs

위와같이 union을 선언했다고하면 위의 그림처럼 메모리에 할당이 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
 
union data
{
    int age;
    int score;
    char class;
};
 
int main(void)
{
    union data miyeong;
    miyeong.age = 20;
    miyeong.score = 100;
    printf("age : %d \n", miyeong.age);
    printf("score : %d \n", miyeong.score);
    printf("miyeong의 크기 : %d \n"sizeof(miyeong));
 
    return 0;
}
cs

13,14번줄에서 age는 20, score는 100을 넣었는데도 age가 100으로 나오는 것을 볼 수 있습니다. 나중에 넣은 score로 메모리에 채워진 것입니다.

17번줄에 miyeong의 크기를 측정했는데 4가 나오는것을 볼 수 있습니다.