C 프로그래밍 · 2 min read · Nov 24, 2025
리눅스 C 프로그래밍 튜토리얼 27부 - 구조체 배열

이 진행 중인 C 프로그래밍 튜토리얼 시리즈에서는 최근에 구조체에 대해 논의하고 있습니다. 우리는 이미 구조체의 기본, 함수와 함께 구조체를 사용하는 방법, 그리고 구조체에 대한 포인터 개념을 다루었습니다.
이제 구조체 개념을 더 확장하여, 이해하기 쉬운 예제를 사용하여 구조체 배열을 만드는 방법에 대해 논의하겠습니다.
C 프로그래밍 언어의 구조체 배열
자, 시작해 보겠습니다. 여기 ‘student_details’라는 간단한 구조체가 있습니다. 이 구조체는 학생의 롤 번호와 점수를 저장하는 데 사용할 수 있습니다:
struct student_details{
int roll_no;
int marks;
};이제, 총 5명의 학생이 있다고 가정하고, 이 학생들의 세부 정보를 사용자로부터 입력받는 요구 사항이 있다고 가정해 보겠습니다. 이를 위한 코드 작성 방법 중 하나는 다음과 같습니다:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1;
struct student_details obj2;
struct student_details obj3;
struct student_details obj4;
struct student_details obj5;
...
...
...
또는 다음과 같은 방법일 수도 있습니다:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1, obj2, obj3, obj4, obj5;
...
...
... 이전의 접근 방식을 따르는 데는 문제가 없습니다. 단지 발생하는 우려는 이러한 접근 방식이 확장 가능한지 여부입니다. 즉, 5명 대신 50개의 객체나 인스턴스를 만들어야 한다면 어떻게 될까요? 그런 경우 이러한 접근 방식을 따르는 것은 코드 작성 및 유지 관리를 훨씬 더 복잡하게 만들 것입니다.
그렇다면 해결책이 있을까요? 네, 있습니다. 더 나은 방법은 ‘student_details’ 구조체의 배열을 만드는 것입니다. 방법은 다음과 같습니다:
struct student_details obj[5];다음은 이 구조체 배열을 활용하는 완전한 프로그램입니다:
#include
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj[5];
int i;
for(i=0;i<5;i++)
{
printf("\n 롤 번호를 입력하세요: ");
scanf("%d", &(obj[i].roll_no));
printf("\n 점수를 입력하세요 (100점 만점): ");
scanf("%d", &(obj[i].marks));
}
printf("\n 입력한 데이터는 다음과 같습니다::");
for(i=0;i<5;i++)
{
printf("\n 롤 번호: %d", (obj[i].roll_no));
printf("-- 점수: %d", (obj[i].marks));
}
return 0;
} 여기서 우리는 앞서 논의한 ‘student_details’ 구조체를 사용하고, 그 타입의 5개 객체 배열을 생성했습니다. 그런 다음 프로그램은 사용자에게 학생의 롤 번호와 점수를 하나씩 입력하도록 요청합니다. 각 학생에 대한 정보는 구조체 배열의 각 인스턴스에 저장됩니다. 마지막으로 저장된 정보는 사용자에게 출력으로 다시 인쇄됩니다.
제 경우의 출력은 다음과 같습니다:
롤 번호를 입력하세요: 1
점수를 입력하세요 (100점 만점): 67
롤 번호를 입력하세요: 2
점수를 입력하세요 (100점 만점): 73
롤 번호를 입력하세요: 3
점수를 입력하세요 (100점 만점): 56
롤 번호를 입력하세요: 4
점수를 입력하세요 (100점 만점): 52
롤 번호를 입력하세요: 5
점수를 입력하세요 (100점 만점): 85
입력한 데이터는 다음과 같습니다::
롤 번호: 1-- 점수: 67
롤 번호: 2-- 점수: 73
롤 번호: 3-- 점수: 56
롤 번호: 4-- 점수: 52
롤 번호: 5-- 점수: 85이 접근 방식을 사용하면 프로그램을 쉽게 확장할 수 있습니다. 즉, 50명의 학생 정보가 저장되고 인쇄되어야 하는 경우, 배열의 크기를 50으로 늘리고 관련된 몇 가지 변경만 하면 됩니다. 나머지 코드는 동일하게 유지됩니다. 요약하자면, 배열을 사용할 때는 튜토리얼 초반에 논의한 접근 방식에 비해 확장성을 쉽게 처리할 수 있습니다.
결론
이 튜토리얼에서는 구조체 배열의 기본 개념을 다루었습니다. 이해하기 쉬운 예제를 사용하여 구조체 배열이 중요한 이유, 언제 사용해야 하는지, 그리고 어떻게 사용하는지에 대해 논의했습니다. 이 튜토리얼의 예제를 여러분의 컴퓨터에서 시도해 보시기 바랍니다. 의문이나 질문이 있는 경우 아래에 댓글을 남겨주세요.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.