15. 공용체

Yongs12 ㅣ 2023. 6. 6. 23:01

공용체
다양한 자료형을 동시에 사용할 수 있는 자료형으로 구조체와 비슷한 선언 방식으로 만든다.

또한 다양한 자료형을 하나의 메모리 공간에 저장할 수 있기 때문에 메모리 절약에 유용하나 공용체의 멤버 변수중 하나를 수정하면 다른 멤버 변수가 함께 수정된다.

이 때 메모리 공간은 가장 큰 크기를 가지는 멤버 변수의 크기만큼 메모리를 할당한다.

 


공용체 예시

// union 키워드를 사용
union data 
{
    int i;
    float f;
    char str[20];
};

int main() 
{
    // 공용체 변수 선언
    union data data1;
    
    // 공용체 멤버에 값 할당
    data1.i = 65;
    
    // 공용체 멤버 변수들의 값 확인
    printf("data1.i의 값: %d\n", data1.i);
    printf("data1.f의 값: %f\n", data1.f);
    printf("data1.str의 값: %s\n", data1.str);
    
    return 0;
}
// 값 출력 결과
data1.i의 값: 65
data1.f의 값: 0.000000
data1.str의 값: A

 

디버깅 시 나오는 값


자료형은 들어온 값에 대해서 어떻게 해석할지에 대한 형이므로 같은 메모리 공간을 공유하는
공용체의 멤버 변수 i에 65를 넣었을 때 각 자료형들의 해석 결과이다.

int 4Byte 정수는 65
float 4Byte 실수는 9.108e-44
char 1Byte 문자는 "A" 로 => ASCII 문자 인코딩에 따라 65는 "A"로 되어 있다.





'C, C++' 카테고리의 다른 글

17. 열거형  (0) 2023.06.08
16. 파일 입출력  (0) 2023.06.07
14. 구조체  (0) 2023.06.04
13. 배열 포인터  (0) 2023.06.03
12. 다차원 배열  (0) 2023.06.02