54.6 연습문제: 공용체 포인터 사용하기

다음 소스 코드를 완성하여 1 1이 출력되게 만드세요.

practice_union_alloc_memory.c

#include <stdio.h>
#include <stdlib.h>

union Data {
    short num1;
    int num2;
};

int main()
{
    __________________________________________

    d1->num2 = 1;

    printf("%d %d\n", d1->num1, d1->num2);

    free(d1);

    return 0;
}

실행 결과

1 1

정답

union Data *d1 = malloc(sizeof(union Data));

해설

union 키워드와 공용체 이름을 사용하여 포인터를 선언한 뒤 malloc 함수로 메모리를 할당합니다. 공용체 크기만큼 메모리를 할당해야 하므로 크기는 sizeof(union Data)와 같이 구하면 됩니다.