프로그래밍언어/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

구조체 배열의 각 요소는 구조체이므로, 그 멤버에 접근하기 위해 점(.) 연산자를 사용합니다.