C언어에서의 공용체 이해하기: 가변형 공용체 구현

  • 3 minutes to read

C 프로그래밍에서 공용체는 동일한 메모리 위치에 다양한 데이터 유형을 저장하는 효율적인 방법을 제공합니다. 이 글에서는 C 언어로 가변형 공용체를 구현하는 방법을 간단한 예제를 통해 살펴봅니다.

공용체란 무엇인가요?

공용체는 사용자 정의 데이터 타입으로, 구조체와 유사하게 동일한 메모리 공간에 다양한 데이터 유형을 저장할 수 있도록 해줍니다. 공용체와 구조체의 주요 차이점은 구조체는 각 구성원에 대해 별도의 메모리를 할당하는 반면, 공용체는 단일 메모리 공간을 할당하여 여러 구성원이 공유한다는 점입니다.

가변형 공용체 예제

본문에서 사용한 'variable_union.c' 코드는 다음과 같습니다:

#include <stdio.h>

// 사용자 정의 공용체 타입 'Variable' 선언
typedef union Variable
{
    int i;      // 정수형 멤버 'i'
    double d;   // 실수형 멤버 'd'
} Var;          // 공용체 타입에 별칭 'Var' 부여

int main(void)
{
    Var va;     // 공용체 타입 'Var'의 변수 'va' 선언

    va.i = 5;   // 변수 'va'의 정수 멤버 'i'에 값 5 할당

    // 할당된 'va.i'의 값 출력
    printf("va.i의 값 : %d\n", va.i);

    va.d = 3.141592;  // 변수 'va'의 실수 멤버 'd'에 값 3.141592 할당

    // 할당된 'va.d'의 값 출력
    printf("va.d의 값 : %f\n", va.d);

    // 'va.i'의 값을 다시 출력. 주의: 이 시점에서 'va.i'의 값은 정의되지 않음
    printf("va.i의 값 : %d\n", va.i);

    return 0;
}
  1. typedef union Variable에서 공용체를 선언하고, 이를 Var라는 별칭으로 지정합니다.
  2. Var 공용체에는 두 개의 멤버 변수 id가 있습니다. i는 정수형 데이터를 저장하고, d는 실수형 데이터를 저장합니다.
  3. main 함수에서 Var 타입의 변수 va를 선언하고, 값을 할당한 다음 출력합니다.
  4. 먼저 va.i에 5를 할당하고 출력한 후, va.d에 3.141592를 할당하고 출력합니다. 이후 다시 va.i의 값을 출력하는데, 이 때 결과는 정의되지 않은 값이 출력됩니다. 이는 va.d에 값을 할당하면서 va.i의 메모리 공간이 덮어씌워졌기 때문입니다.

이 예제를 통해 C 언어에서 공용체를 사용하여 가변형 데이터 타입을 구현하는 방법을 살펴보았습니다. 공용체는 메모리를 효율적으로 사용하고 다양한 데이터 타입을 저장할 수 있는 특징을 가지고 있지만, 주의해서 사용해야 합니다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com