Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어 구조체 배열 완벽 가이드: 개념부터 예제까지

C 프로그래밍 언어에서 구조체(structure)의 가장 널리 사용되는 형태는 바로 구조체 배열(array of structures)입니다. 구조체 하나에는 서로 다른 자료형의 데이터를 묶어 담을 수 있고, 이를 배열로 만들면 동일한 형식의 데이터 여러 개를 효율적으로 관리할 수 있습니다.

구조체 배열 선언하기

구조체 배열을 선언하려면 먼저 구조체를 정의한 뒤, 해당 구조체 타입의 배열 변수를 선언하면 됩니다.

struct book b[10]; // 'book' 타입 구조체 배열에 요소 10개 생성

예제: 학생 3명의 정보 다루기

다음은 구조체 배열을 사용해 학생 3명의 정보(학번, 이름, 백분율)를 저장하고 출력하는 C 프로그램입니다.

#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;
}

참고: 배열의 인덱스는 0부터 시작하므로, 학생 3명의 정보를 저장하려면 배열 크기를 반드시 3 이상으로 선언해야 합니다(record[3]). 크기가 부족한 배열에 접근하면 정의되지 않은 동작(undefined behavior)이 발생할 수 있으니 주의하세요.

실행 결과

위 프로그램을 컴파일하여 실행하면 다음과 같은 결과가 출력됩니다.

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

핵심 정리

구조체 배열은 학생, 도서, 직원 정보처럼 서로 연관된 데이터를 한꺼번에 관리할 때 매우 유용합니다. 각 배열 요소는 독립된 구조체이며, 점(.) 연산자를 사용해 record[i].id, record[i].name과 같이 각 멤버에 손쉽게 접근할 수 있습니다. 반복문과 함께 사용하면 대량의 데이터도 간결한 코드로 처리할 수 있다는 점이 가장 큰 장점입니다.