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

C 프로그래밍에서 구조체 내 배열의 개념과 활용법

C 프로그래밍에서 구조체 배열(array of structure)은 서로 다른 자료형의 변수들을 하나의 이름 아래 묶어 관리할 수 있게 해주는 강력한 기능입니다. 구조체 내부에 배열을 선언하면 여러 개의 연관된 데이터를 체계적으로 저장하고 처리할 수 있습니다.

구조체 선언의 일반적인 형태

구조체는 다음과 같은 형식으로 선언합니다.

struct tagname{
    datatype member1;
    datatype member2;
    datatype member n;
};

여기서 각 요소의 의미는 다음과 같습니다.

struct : 구조체를 정의하는 키워드입니다.

tagname : 구조체의 이름을 지정합니다.

member1, member2 : 구조체를 구성하는 데이터 항목(멤버)들을 나타냅니다.

구조체 내 배열 선언 예시

다음 예제는 C 프로그래밍에서 구조체 내부에 배열을 사용하는 방법을 보여줍니다.

struct book{
    int pages;
    char author [30];
    float price;
};

위 코드에서 author[30]처럼 문자 배열을 멤버로 선언하면 최대 30자까지의 저자 이름을 저장할 수 있습니다.

구조체 내 배열 활용 예제 프로그램

다음은 구조체 안에 배열을 선언하고 사용하는 방법을 보여주는 전체 C 프로그램입니다.

#include <stdio.h>
// candidate 구조체 선언
struct candidate {
    int roll_no;
    char grade;
    // 구조체 내부의 배열
    float marks[4];
};
// 구조체 변수의 내용을 출력하는 함수
void display(struct candidate a1){
    printf("Roll number : %d\n", a1.roll_no);
    printf("Grade : %c\n", a1.grade);
    printf("Marks secured:\n");
    int i;
    int len = sizeof(a1.marks) / sizeof(float);
    // 구조체 내부 배열의 내용에 접근
    for (i = 0; i < len; i++) {
        printf("Subject %d : %.2f\n",
        i + 1, a1.marks[i]);
    }
}
// 메인 함수
int main(){
    // 구조체 초기화
    struct candidate A= { 1, 'A', { 98.5, 77, 89, 78.5 } };
    // 구조체 내용 출력 함수 호출
    display(A);
    return 0;
}

실행 결과

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

Roll number : 1
Grade : A
Marks secured:
Subject 1 : 98.50
Subject 2 : 77.00
Subject 3 : 89.00
Subject 4 : 78.50

핵심 포인트 정리

이 예제에서 주목할 부분은 sizeof(a1.marks) / sizeof(float)를 사용해 배열의 길이를 계산한 점입니다. 이렇게 하면 배열 크기가 변경되더라도 반복문을 수정할 필요가 없어 코드의 유지보수성이 높아집니다. 또한 구조체 멤버인 배열에 접근할 때는 점(.) 연산자와 인덱스를 함께 사용하여 a1.marks[i] 형태로 각 요소에 접근합니다.