Page 161 고등학교 프로그래밍 교과서
P. 161










3 공용체에 대해 알아보자






C 언어에는 하나의 메모리 공간을 여러 개의 변수들이 공유할 수 있게 하는 기능
이 있다. 이것을 공용체(Union)이라 하며, 하나의 메모리 공간을 여러 개의 변수가
공유하는 이유는 메모리를 절약하기 위해서이다. 공용체는 구조체와 비슷하지만 구

조체는 구조체 안의 멤버 변수가 하나의 메모리 공간을 공유하지는 않는다.

















[그림Ⅱ- 13] 구조체와 공용체


다음은 공용체를 이용하여 메모리의 크기를 알아보는 프로그램이다.

프로그램


01 #include
02 union studentInfoUnion {
03 int stNum;
04 char name[20];
05 int stAge;
06 };
07 int main(void)
08 {
09 printf("%d byte", sizeof(union studentInfoUnion));
10 return 0; Q & A
11 }
만약 옆 코드에서 Union 키워드
를 struct로 바꾸면 몇 byte가 출력
실행 결과 될까? 구조체와 다르게 출력된다면
왜 그럴까?
다르게 출력된다. 공용체는 멤
20byte 버 변수가 메모리를 공유하기 때문
에 가장 큰 변수의 기억 공간의 크
기가 공용체의 크기가 되지만, 구
조체는 멤버 각각의 기억 공간을 합
위 프로그램을 실행하면 공용체 studentInfoUnion에 가장 큰 기억 공간을 차지하 한 것이 구조체의 크기가 된다. 따라
서 Union 키워드를 struct로 바꾸면
는 name[20]의 크기가 출력된다. 즉 20 byte가 출력된다. 28byte가 출력된다.

8. 구조체와 공용체 159






(책)2015프로그래밍-교과서3차심의본 본문.indb 159 2017-09-05 오후 4:16:36
   156   157   158   159   160   161   162   163   164   165   166