거북이처럼 천천히

공용체 본문

C

공용체

유로 청년 2024. 6. 20. 15:20

1. 공용체는 무엇인가?

  • 공용체의 선언 방식은 구조체와 동일하나, 구조체는 메모리상에 모든 맴버들을 저장하기 위한 공간을 마련하지만, 공용체인 경우에는 모든 맴버들이 하나의 저장 공간을 공유하며, 사용한다.
  • 공용체의 기본 형태는 다음과 같다.
// 공용체 선언
union student {
	int stduent_id;
    double grade; 
};

 

 

 

 

 

 

2. 모든 맴버들이 하나의 저장 공간을 공유한다면, 동시에 여러 맴버들을 저장할 수 있는가?

  • 공용체에서는 맴버들이 하나의 저장 공간을 공유하면 저장하기 때문에 동시에 여러 맴버들의 데이터들을 저장할 수 없다.
  • 따라서 하나의 맴버 값이 저장 공간에 저장되어 있는 상태에서 다른 맴버값이 저장된다면 기존의 맴버 데이터 값에다가 덮어씌우기 형태로 저장된다.
  • 따라서 모든 맴버들이 하나의 저장 공간을 공유한다는 점에서 메모리가 절약되지만, 동시에 여러 맴버들의 값을 저장할 수 없다는 단점을 갖는다.

 

 

 

 

 

 

3. 공용체의 규칙

3.1) 공용체의 변수 크기는 맴버들 가운데에서 가장 크기가 큰 맴버가 기준이 된다.

union MyUnion {
    float a,
    double b, 
    int c,
    char d[5] };
  • 위와 같이 서로 다른 자료형을 갖는 맴버들이 존재한다면, double 형이 8byte로 가장 크기 때문에 공용체의 크기는 8byte를 갖는다.

 

3.2) 공용체 변수의 초기화는 중괄호를 사용해 첫 번째 맴버만 초기화한다.

  • 공용체는 동시에 여러 맴버들의 값을 저장할 수 없기 때문에 공용체의 초기화는 첫 번재 맴버만 초기화하거나 맴버 접근 연산자를 통해 직접 지정해야 한다.

'C' 카테고리의 다른 글

C언어 잡다한 정보 정리 (1)  (0) 2024.07.04
구조체의 메모리 공간 크기  (0) 2024.06.20
함수 포인터  (0) 2024.06.19
배열 포인터  (1) 2024.06.19
이중 포인터  (1) 2024.06.19