본문 바로가기

공부/c언어

공용체 (c언어)

반응형

공용체

: 서로 다른 자료형을 동일한 저장 공간에 이용하는 자료형

 

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는 아무 의미가 없음

왜냐하면 동일한 저장 공간을 이용하기 때문

 

항상 공용차에는 마지막에 저장한 멤버의 값만이 의미있는 값이므로, 이 마지막에 저장한 값이 무엇인지는 프로그래머의 책임

반응형