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); }
'방송통신대학 > 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 |