반응형
공용체
: 서로 다른 자료형을 동일한 저장 공간에 이용하는 자료형
union data {
char ch;
int cht;
double real;
} data1, *pdata;
typedef union data uniondata;
변수 data1 :
<-----> char(1바이트)
<------------------------------> int(4바이트)
<----------------------------------------------------------------> double(8바이트)
공용처의 초기값은 첫 멤버의 초기 값으로만 저장이 가능, 다른 동일한 변수의 값으로 초기화가능
uniondata data2 = {'A'};
uniondata data3 = data2;
접근 연산자'.' 이용, 포인터인 경우는 연산자'->'을 이용
pdata = &data2;
printf("%2c %2c\n", pdata->ch, (*pdata).ch);
printf("%2c %2c\n", data2.ch, data3.ch);
data1.cnt에 10을 저장하면 이전의 값인 data1.ch는 아무 의미가 없음
왜냐하면 동일한 저장 공간을 이용하기 때문
항상 공용차에는 마지막에 저장한 멤버의 값만이 의미있는 값이므로, 이 마지막에 저장한 값이 무엇인지는 프로그래머의 책임
반응형