■C언어 기초: 구조체와 공용체
C언어는 시스템 프로그래밍 및 임베디드 시스템 개발에 널리 사용되는 프로그래밍 언어입니다. 그 중에서도 데이터 구조를 효율적으로 관리하기 위해 **구조체(struct)**와 **공용체(union)**는 매우 유용한 기능입니다. 이 글에서는 구조체와 공용체의 개념 및 사용법에 대해 자세히 살펴보겠습니다.
1. 구조체 (Structure)
구조체는 서로 다른 데이터 타입을 묶어 하나의 데이터 타입으로 정의할 수 있는 사용자 정의 데이터 구조입니다. 이를 통해 관련된 데이터를 그룹화하여 관리할 수 있습니다. 구조체를 사용하면 코드의 가독성과 유지보수성을 높일 수 있습니다.
1.1 구조체 정의
구조체는 `struct` 키워드를 사용하여 정의합니다. 기본적인 구조체 정의 및 사용법은 다음과 같습니다.
[예제]
#include <stdio.h>
// 구조체 정의
struct Student {
char name[50];
int age;
float grade;
};
int main() {
// 구조체 변수 선언
struct Student student1;
// 구조체 멤버 초기화
strcpy(student1.name, "Alice");
student1.age = 20;
student1.grade = 3.8;
// 구조체 멤버 출력
printf("Name: %s\n", student1.name);
printf("Age: %d\n", student1.age);
printf("Grade: %.2f\n", student1.grade);
return 0;
}
위의 코드에서는 `Student`라는 구조체를 정의하고, 이름, 나이, 성적을 멤버로 가집니다. `student1`이라는 변수를 선언하여 멤버에 값을 할당한 후 출력하고 있습니다.
1.2구조체 배열
구조체를 배열로 선언하여 여러 개의 데이터를 관리할 수도 있습니다.
[예제]
#include <stdio.h>
#include <string.h>
struct Student {
char name[50];
int age;
float grade;
};
int main() {
struct Student students[3];
// 구조체 배열 초기화
strcpy(students[0].name, "Alice");
students[0].age = 20;
students[0].grade = 3.8;
strcpy(students[1].name, "Bob");
students[1].age = 21;
students[1].grade = 3.6;
strcpy(students[2].name, "Charlie");
students[2].age = 22;
students[2].grade = 3.9;
// 구조체 배열 출력
for (int i = 0; i < 3; i++) {
printf("Name: %s, Age: %d, Grade: %.2f\n", students[i].name, students[i].age, students[i].grade);
}
return 0;
}
위의 예제에서는 `students`라는 구조체 배열을 사용하여 3명의 학생 정보를 저장하고 출력하고 있습니다.
2. 공용체 (Union)
공용체는 구조체와 유사하지만, 여러 데이터 타입 중 하나만 저장할 수 있는 데이터 구조입니다. 공용체는 메모리 사용을 최적화할 수 있는 방법입니다. 즉, 공용체의 크기는 가장 큰 멤버의 크기로 결정됩니다.
2.1공용체 정의
공용체는 `union` 키워드를 사용하여 정의합니다.
[예제]
#include <stdio.h>
// 공용체 정의
union Data {
int intValue;
float floatValue;
char charValue;
};
int main() {
union Data data;
// 정수 값 저장
data.intValue = 5;
printf("Integer: %d\n", data.intValue);
// 실수 값 저장 (이전 값이 덮어씌워짐)
data.floatValue = 3.14;
printf("Float: %.2f\n", data.floatValue);
// 문자 값 저장 (이전 값이 덮어씌워짐)
data.charValue = 'A';
printf("Character: %c\n", data.charValue);
// 공용체의 메모리 사용 예
printf("Size of union: %lu bytes\n", sizeof(data));
return 0;
}
이 코드에서는 `Data`라는 공용체를 정의하고 정수, 실수, 문자 값을 저장해 보았습니다. 공용체의 특성 상 마지막에 저장한 값만 유효하며, 그 이전의 값은 덮어쓰여집니다.
2.2공용체의 활용
공용체는 메모리 절약이 필요할 때 유용합니다. 예를 들어, 다양한 타입의 데이터를 저장할 필요가 있을 때, 각각의 타입을 위해 별도의 메모리를 할당할 필요가 없습니다.
3.결론
구조체와 공용체는 C언어에서 데이터 관리를 효율적으로 할 수 있게 도와주는 중요한 도구입니다. 구조체는 관련된 데이터를 그룹화하여 사용할 수 있게 해주고, 공용체는 메모리를 절약하면서 다양한 타입의 데이터를 저장할 수 있는 유연성을 제공합니다. 이 두 가지 개념을 잘 이해하고 활용하면 C언어 프로그래밍의 효율성을 크게 높일 수 있습니다.
'IT프로그램 언어 > C 언어' 카테고리의 다른 글
C언어 기초(파일 입출력 함수 및 간단한 성적 관리 프로그램) (2) | 2024.11.16 |
---|---|
C언어 기초(포인터: 초보자를 위한 가이드) (0) | 2024.11.11 |
C언어 기초( 함수: 초보자를 위한 심화 가이드) (4) | 2024.11.11 |
C언어 기초(문자열 다루기) (12) | 2024.11.10 |
C언어 기초(1차원/2차원 배열) (1) | 2024.11.10 |