반응형
SMALL

7.2 공용체 union

> 동일한 기억장소에 여러 유형의 자료를 저장하기 위해서 프로그래머가 선언한 자료형

> 공용체 안에 포함된 자료들이 같은 기억장소를 공유하여 사용

> 사용될 자료의 자료형이 유동적일 경우 기억공간을 효율적으로 사용할 수 있는 장점

 

*공용체의 예

> 공용체의 멤버들이 완전히 다른 자료형을 가질 때 기억공간을 절약하기 위해 사용

 

예) 급여관리 프로그램에서

 - 원화로 월급을 지급받는 사람 : 정수형으로 처리

 - 달러로 월급을 지급받는 사람 : 실수형으로 처리

 

:: >> 이러한 경우, 공용체를 사용하면 필요에 따라 메모리의 자료형을 선택해서 값을 저장 가능

 

 

 

7.2.1 공용체의 정의

- 공용체의 정의

- 형식                                     -사용 예

union 공용체명 {                         union var {

            멤버 1;                                    char a;

            멤버 2;                                    int b;

            .....                                          float c;

};                                                   };

 

- 공용체 변수의 선언

-- 형식 : union 공용체명 변수명;

-- 사용 예 : union var abc ;

 

 

// 공용체 정의와 변수 선언 예

union var {              >>     공용체 정의

           char a;

           int b;

           float c;        >>  공용체 멤버

 };  

union var abc;          >>  공용체 변수 선언

 

 

// 공용체 변수의 참조 방법

union var { 

     char a;

     int b;

     float c;

};

union var abc;

     abc.a ='A';

     abc.b =133;

     abc.c =1234.5678;  >>  공용체 변수의 참조

 

 

 

7.2.2 공용체의 사용

- 공용체가 사용되면

 > 공용체의 멤버 중에서 자료크기(byte 수)가 가장 큰 멤버에 대해서만 기억공간이 할당 되고,

 > 기억 공간의 시작 위치부터 각 부분을 다른 멤버가 공요으로 사용

 

* 공용체의 기억공간 표현 예
union hold {
     shortint digit;
     double big;
     char letter; };

// 공용체 변수의 참조 예

union hold {

     short int digit;

     double big;

     car letter;

};

union hold fit;

     fit.digit = 23;    ----- > 23이 저장(2byte만 사용) 

     fit.big = 1234.567; ---> 23이 지워지고 1234.567이 저장됨 (8byte만 사용) 

     fit.letter = 'b';   ------> 1234.567이 지워 지고 ‘b’가 저장됨 (1byte만 사용)

 

 

// 공용체 변수의 기억공간 사용 예

unionhold { 

     shortint digit;

     double big;

     char letter;

};

union hold fit; 

 

 

// 공용체 변수의 사용 예

#include <stdio.h>

void main(){

     union test{

          short int i;

          float f;

          double d;

};

     union test u;                          // 공용체 변수 선언

         u.i = u.f =u.d =0;

     printf("%dbyte\n",sizeof(u));

     u.i=100;                                // 공용체 멤버의 참조

     printf("%d%f%f\n",u.i,u.f,u.d);

     u.f=0.5;                                // 공용체 멤버의 참조

     printf("%d%f%f\n",u.i,u.f,u.d);

     u.d=0.016667;                        // 공용체 멤버의 참조

     printf("%f\n",u.d);      } 

반응형
LIST

'방송통신대학 > C 프로그래밍' 카테고리의 다른 글

파일처리함수  (1) 2020.06.17
13강 파일처리 함수  (0) 2020.06.16
구조체struct 의 비트필드 bit field  (0) 2020.06.14
함수function와 구조체struct  (2) 2020.06.13
구조체 배열struct array  (0) 2020.06.12

+ Recent posts