구조체 배열이란?
C 프로그래밍에서 구조체 배열(array of structure)은 서로 다른 데이터 타입의 변수들을 하나의 이름 아래 묶어 놓은 집합을 의미합니다. 예를 들어 학생 여러 명의 번호, 이름, 성적처럼 서로 다른 자료형으로 이루어진 데이터를 하나로 관리할 수 있어 실무에서 매우 유용하게 활용됩니다.
구조체 선언의 일반적인 형태
구조체는 다음과 같은 형식으로 선언합니다.
struct tagname{
datatype member1;
datatype member2;
datatype member n;
};각 구성 요소의 의미는 다음과 같습니다.
struct — 구조체를 정의할 때 사용하는 키워드입니다.
tagname — 구조체의 이름을 지정합니다.
member1, member2 — 구조체를 구성하는 데이터 항목(멤버)을 나타냅니다.
구조체 선언 예시
다음은 책 정보를 저장하는 구조체 선언 예시입니다.
struct book{
int pages;
char author[30];
float price;
};구조체 배열의 특징
C 프로그래밍에서 구조체가 가장 널리 사용되는 형태가 바로 구조체 배열입니다.
구조체 배열을 선언하려면 먼저 구조체를 정의한 뒤, 해당 구조체 타입의 배열 변수를 선언해야 합니다.
예를 들어
struct book b[10];처럼 선언하면 'book' 타입의 구조체 10개를 담는 배열이 생성됩니다.
구조체 배열 활용 예제
다음 프로그램은 학생 3명의 정보를 구조체 배열에 저장하고, 반복문을 이용해 순서대로 출력하는 예제입니다.
#include <stdio.h>
#include <string.h>
struct student{
int id;
char name[30];
float percentage;
};
int main(){
int i;
struct student record[3]; // 학생 3명의 데이터를 저장할 구조체 배열
// 1번째 학생 정보
record[0].id = 1;
strcpy(record[0].name, "Bhanu");
record[0].percentage = 86.5;
// 2번째 학생 정보
record[1].id = 2;
strcpy(record[1].name, "Priya");
record[1].percentage = 90.5;
// 3번째 학생 정보
record[2].id = 3;
strcpy(record[2].name, "Hari");
record[2].percentage = 81.5;
for(i = 0; i < 3; i++){
printf(" Records of STUDENT : %d \n", i+1);
printf(" Id is: %d \n", record[i].id);
printf(" Name is: %s \n", record[i].name);
printf(" Percentage is: %f\n\n", record[i].percentage);
}
return 0;
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Records of STUDENT : 1
Id is: 1
Name is: Bhanu
Percentage is: 86.500000
Records of STUDENT : 2
Id is: 2
Name is: Priya
Percentage is: 90.500000
Records of STUDENT : 3
Id is: 3
Name is: Hari
Percentage is: 81.500000
마무리 정리
구조체 배열을 활용하면 여러 명의 학생 정보처럼 동일한 형식의 데이터를 반복문으로 손쉽게 입력하고 출력할 수 있습니다. 참고로 위 예제에서는 학생 3명의 데이터를 저장하기 위해 배열 크기를 record[3]으로 선언해야 한다는 점에 유의하세요. 배열 크기보다 많은 인덱스에 접근하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있습니다. 구조체 배열은 성적 관리, 도서 목록, 회원 정보 처리 등 실제 프로그램에서 폭넓게 응용되는 핵심 개념이므로, 직접 코드를 작성하며 익혀두는 것이 좋습니다.