고흐의 연구실/C언어와 C++

[C언어] 공용체란? Union?

전고흐 2020. 8. 10. 01:41
728x90

ㅇ구조체와 공용체의 차이

  - 구조체는 각 변수가 각자의 메모리를 차지,

  - 공용체는 메모리를 공유

 

ㅇ 따라서, 공용체는 어느 한 변수에 값이 저장되면, 나머지 변수의 값은 사용할 수 없다.

 

ㅇ공용체 정의와 선언

union 공용체이름 {       // 공용체 정의
    자료형 멤버이름;
};
union 공용체이름 변수이름;    // 공용체 선언

ㅇExample

#define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지
#include <stdio.h>
#include <string.h> // strcpy 함수가 선언된 헤더 파일

union Box { // 공용체 정의
    short candy; // 2바이트
    float snack; // 4바이트
    char doll[8]; // 8바이트
};

int main()
{
    union Box b1; // 공용체 변수 선언
    printf("%d\n", sizeof(b1)); // 8: 공용체의 전체 크기는 가장 큰 자료형의 크기
    strcpy(b1.doll, "bear"); // doll에 문자열 bear 복사
    printf("%d\n", b1.candy); // 25954
    printf("%f\n", b1.snack); // 4464428256607938511036928229376.000000
    printf("%s\n", b1.doll); // bear
    return 0;
}

ㅇ결과

8
25954
4464428256607938511036928229376.000000
bear

 

ㅇ공용체와 앤디안!

참고 : https://dojang.io/mod/page/view.php?id=455

 

C 언어 코딩 도장: 54.2 공용체와 엔디언

공용체 멤버에 값을 저장하고 가져오는 방법을 좀 더 자세히 알아보겠습니다. 다음 내용을 소스 코드 편집 창에 입력한 뒤 실행해보세요. union_endian.c #include union Data { // 공용체 정의 char c1; short n

dojang.io

 

 

728x90