인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

호두님의 프로필 이미지
호두

작성한 질문수

홍정모의 따라하며 배우는 C언어

14.16 공용체와 구조체를 함께 사용하기

[04:50] 음성 status가 원일 때 -> status가 0일 때

해결된 질문

작성

·

150

1

안녕하세요?

1.=================================

[04:50] 음성 status가 원일 때 -> status가 0일 때로 바뀌어야 할 거 같습니다.

2.================================

이 예제에서 공용체가 없었다면 

car_data구조체 안에 두 개의 구조체를 사용해야하지만 

(po, co 두 구조체를 묶은)공용체가 있어서 사용하기에 더 편리해진거죠?

감사합니다.

<전체코드>

/*
    by neuezeal.
*/
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct personal_owner
{
    char rrn1[7];   //Resident Registration Number
    char rrn2[8];   //ex: 830422-1185600
};

struct company_owner
{
    char crn1[4];   //Company Registration Number
    char crn2[3];   // ex: 111-22-33333
    char crn3[6];
};

union data
{
    struct personal_owner po;
    struct company_owner  co;
};

struct car_data
{
    char model[15];
    int status; /* 0 = personal, 1 = company */
    union data ownerinfo;
};

void print_car(struct car_data car)
{
    printf("-----------------------\n");
    printf("Car model : %s\n"car.model);

    if (car.status == 0/* 0 = personal, 1 = company */
        printf("Personal owner : %s-%s\n",
            car.ownerinfo.po.rrn1car.ownerinfo.po.rrn2);
    else
        printf("Company owner : %s-%s-%s\n",
            car.ownerinfo.co.crn1car.ownerinfo.co.crn2car.ownerinfo.co.crn3);
    printf("-----------------------\n");
}

int main()
{
    struct car_data my_car = { .model = "Avante",.status = 0, .ownerinfo.po = {"830422""1185600"} };
    struct car_data company_car = { .model = "Sonata", .status = 1,.ownerinfo.co = {"111""22""33333"} };
    
    print_car(my_car);
    print_car(company_car);

    return 0;
}

답변 1

2

홍정모님의 프로필 이미지
홍정모
지식공유자

1. status가 1일때 else부분이 실행되는게 맞기 때문에 말의 흐름상 0일때로 바뀌어야 하는 것이 맞겠네요. 자세한 이유는 나중에 수정할 때 다시 봐야할 것 같습니다.

2. 메모리를 공유한다는 점도 중요합니다.

호두님의 프로필 이미지
호두

작성한 질문수

질문하기