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언어에서는 구조체, 공용체, 열거형을 활용하여 새로운 데이터 타입을 정의하고 사용할 수 있습니다.
참조: