[c언어] 새로운 데이터 타입

C 언어는 유연한 데이터 타입을 정의하고 사용할 수 있는데, 이번에는 새로운 데이터 타입을 만드는 방법에 대해 알아보겠습니다. 이를 통해 코드의 가독성을 높일 수 있고, 프로그램의 유지 보수성을 개선할 수 있습니다.

구조체 (Structures)

구조체는 서로 관련된 여러 데이터를 묶어서 하나의 자료형으로 정의하는데 사용됩니다. 구조체를 사용하면 연관된 데이터를 하나의 단위로 표현할 수 있어서 코드를 보다 쉽게 이해할 수 있게 됩니다. 구조체의 정의는 다음과 같이 표현됩니다:

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

위의 예제에서 Person은 구조체의 이름이고, name, age, height는 해당 구조체의 멤버 변수입니다. 이후에 해당 구조체를 사용할 때, struct 키워드를 사용하여 인스턴스를 생성할 수 있습니다:

struct Person person1;
strcpy(person1.name, "John Doe");
person1.age = 30;
person1.height = 175.5;

공용체 (Unions)

공용체는 서로 다른 형식의 데이터를 하나의 메모리 공간을 공유하도록 정의할 때 사용됩니다. 예를 들어, 서로 다른 데이터 형식을 한 가지 형식으로 저장하고 싶을 때 유용합니다. 공용체의 정의는 다음과 같이 표현됩니다:

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

위의 예제에서 Data는 공용체의 이름이고, i, f, str는 해당 공용체의 멤버 변수입니다. 이후에 해당 공용체를 사용할 때, union 키워드를 사용하여 인스턴스를 생성할 수 있습니다:

union Data data1;
data1.i = 10;
printf("%d", data1.i);
data1.f = 3.14;
printf("%f", data1.f);

열거형 (Enumerations)

열거형은 연속된 정수 값을 가지는 상수들을 정의할 때 사용됩니다. 이를 통해 코드의 가독성을 높일 수 있으며, 특정 값의 유효성 검사가 용이해집니다. 열거형의 정의는 다음과 같이 표현됩니다:

enum Month {
    JAN = 1,
    FEB,
    MAR,
    APR,
    MAY,
    JUN,
    JUL,
    AUG,
    SEP,
    OCT,
    NOV,
    DEC
};

위의 예제에서 Month는 열거형의 이름이고, JAN, FEB, MAR 등은 해당 열거형의 상수입니다. 이후에 해당 열거형을 사용할 때, 각 상수를 참조하여 값을 지정할 수 있습니다:

enum Month currentMonth = MAR;
if (currentMonth == MAR) {
    printf("It's March");
}

이처럼 C언어에서는 구조체, 공용체, 열거형을 활용하여 새로운 데이터 타입을 정의하고 사용할 수 있습니다.


참조: