728x90
학생이 한 명이라면 구조체 하나로 충분하지만, 여러 명을 관리하려면 어떻게 해야 할까요?
이럴 때 사용하는 것이 바로 구조체 배열입니다.
구조체 배열을 사용하면 같은 구조체 형식을 여러 개 한꺼번에 선언하고 저장할 수 있습니다.
● 구조체 배열 선언
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
구조체 배열의 각 요소는 구조체이므로, 그 멤버에 접근하기 위해 점(.) 연산자를 사용합니다.
728x90
'프로그래밍언어 > C언어[초급]' 카테고리의 다른 글
[C언어][초급] Chapter59. 구조체와 포인터 – 포인터로 구조체를 다루는 방법 (0) | 2025.04.19 |
---|---|
[C언어][초급] Chapter58. 중첩 구조체 – 구조체 안에 또 다른 구조체 담기 (0) | 2025.04.19 |
[C언어][초급] Chapter56. 구조체 멤버 접근 – 점(.)과 화살표(→) 연산자 차이 알기 (0) | 2025.04.19 |
[C언어][초급] Chapter55. 구조체의 선언과 사용 – 여러 데이터를 하나로 묶는 방법 (0) | 2025.04.19 |
[C언어][초급] Chapter54. 포인터를 이용한 함수 호출 – (call by value, call by reference) (0) | 2025.04.19 |