프로그래밍언어/C언어[초급]
[C언어][초급] Chapter57. 구조체 배열 – 여러 개의 구조체를 한 번에 관리하는 방법
about_IT
2025. 4. 19. 10:00
학생이 한 명이라면 구조체 하나로 충분하지만, 여러 명을 관리하려면 어떻게 해야 할까요?
이럴 때 사용하는 것이 바로 구조체 배열입니다.
구조체 배열을 사용하면 같은 구조체 형식을 여러 개 한꺼번에 선언하고 저장할 수 있습니다.
● 구조체 배열 선언
struct Student {
char name[20];
int age;
float score;
};
struct Student s[3];
Student 구조체를 3개 가진 배열 s를 선언한 예입니다.
● 구조체 배열 초기화
struct Student s[2] = {
{"유나", 20, 90.5},
{"지훈", 22, 85.0}
};
배열처럼 각 구조체에 초기값을 넣을 수 있습니다.
● 구조체 배열 접근
printf("%s %d %.1f\n", s[0].name, s[0].age, s[0].score);
배열 요소에 접근하듯 s[0], s[1]처럼 접근하고, 그 안의 멤버는 점(.)으로 꺼냅니다.
● 구조체 배열 반복 출력
for (int i = 0; i < 2; i++) {
printf("%s %d %.1f\n", s[i].name, s[i].age, s[i].score);
}
배열처럼 반복문으로 전체 구조체 데이터를 처리할 수 있습니다.
● 요약
- 같은 형식의 구조체를 여러 개 만들고 싶을 때 배열 사용
- 배열 인덱스로 접근 가능
- 반복문과 함께 자주 사용됨
구조체 배열은 학생 명단, 상품 목록, 성적표 등 현실 데이터를 처리할 때 매우 유용한 도구입니다.
배열과 구조체의 개념을 잘 결합하면 데이터를 효율적으로 관리할 수 있습니다.
● 실습 문제
문제 1
학생(Student) 구조체 3명을 저장할 수 있는 구조체 배열을 선언하세요.
문제 2
구조체 배열에 학생 정보를 초기화해보세요. 이름과 나이만 입력해도 됩니다.
문제 3
구조체 배열 s[3]에 있는 모든 학생 정보를 반복문으로 출력하는 코드를 작성하세요.
문제 4
구조체 배열을 선언하지 않고 학생 5명을 따로 선언할 때 발생하는 단점은?
문제 5
구조체 배열에서 점(.) 연산자를 사용하는 이유를 간단히 설명하세요.
▶ 정답 확인하기
정답 1
struct Student s[3];
정답 2
struct Student s[2] = {
{"지수", 21},
{"태현", 23}
};
정답 3
for (int i = 0; i < 3; i++) {
printf("%s %d\n", s[i].name, s[i].age);
}
정답 4
학생마다 구조체 변수를 따로 만들면 관리가 번거롭고, 반복문을 사용할 수 없습니다.
정답 5
구조체 배열의 각 요소는 구조체이므로, 그 멤버에 접근하기 위해 점(.) 연산자를 사용합니다.