[c] 구조체와 유니언

C 언어에서 구조체(struct)와 유니언(union)은 데이터를 단일 단위로 관리하고 조직화하는 데 사용됩니다. 이러한 데이터 구조들은 프로그래밍에서 매우 중요한 역할을 하며, 데이터를 보다 효율적으로 다루는 데 도움이 됩니다.

구조체 (struct)

구조체는 서로 관련된 여러 데이터 형식을 포함하는 데 사용됩니다. 각 데이터 형식을 멤버(member)라고 하며, 멤버들은 각각 이름을 가질 수 있습니다. 구조체는 다양한 유형의 데이터를 단일 단위로 묶어서 처리하고자 할 때 유용합니다.

다음은 구조체를 정의하고 사용하는 간단한 예제입니다.

struct Person {
    char name[50];
    int age;
    float height;
};

int main() {
    // 구조체 변수 선언
    struct Person person1;

    // 멤버에 값 할당
    strcpy(person1.name, "John");
    person1.age = 25;
    person1.height = 175.5;

    return 0;
}

위의 예제에서, struct Person은 구조체의 이름이고, name, age, height는 각각의 구조체 멤버입니다. struct Person을 사용하여 person1이라는 구조체 변수를 선언하고, 이 변수의 멤버들에 값을 할당하고 있습니다.

유니언 (union)

유니언은 여러 데이터 형식 중에서 하나의 데이터 형식만을 동시에 가질 수 있는 특별한 형태의 데이터 구조입니다. 유니언의 각 멤버는 같은 메모리 영역을 공유하며, 서로 다른 시점에 값을 갖을 수 있습니다. 이러한 특징으로 인해 유니언은 메모리를 절약하는 데 유용하게 사용될 수 있습니다.

다음은 유니언을 정의하고 사용하는 간단한 예제입니다.

union Data {
    int i;
    float f;
    char str[20];
};

int main() {
    union Data data;

    data.i = 10;
    printf("%d\n", data.i);

    data.f = 25.5;
    printf("%f\n", data.f);

    strcpy(data.str, "hello");
    printf("%s\n", data.str);

    return 0;
}

위의 예제에서, union Data는 유니언의 이름이고, i, f, str은 유니언의 멤버들입니다. data는 유니언 변수로, 서로 다른 시점에 각 멤버에 값을 할당하고 출력하고 있습니다.

결론

구조체와 유니언은 C 언어에서 데이터를 구조화하고 관리하는 데 중요한 도구로 활용됩니다. 구조체는 관련된 데이터들을 그룹화하여 다루는 데 유용하고, 유니언은 각각의 멤버가 메모리를 공유하면서 서로 다른 시점에 값을 가질 수 있어서 효율적으로 메모리를 활용하는 데 도움이 됩니다. 프로그래밍에서 데이터 처리와 관리를 위해 구조체와 유니언을 적절히 활용하는 것은 중요한 요소입니다.