웹사이트 검색

Linux C 프로그래밍 자습서 27부 - 구조 배열


이 페이지에서

  1. C 프로그래밍 언어의 구조 배열\n
  2. 결론

진행 중인 이 C 프로그래밍 자습서 시리즈에서 우리는 최근 구조에 대해 논의했습니다. 우리는 이미 구조의 기본, 구조가 함수와 함께 사용되는 방법, 구조에 대한 포인터의 개념을 다루었습니다.

이제 구조의 개념을 더 확장하여 이해하기 쉬운 예제를 사용하여 구조 배열을 만드는 방법에 대해 설명합니다.

C 프로그래밍 언어의 구조 배열

시작하겠습니다. 보시다시피 학생의 롤 번호와 점수를 저장하는 데 사용할 수 있는 student_details라는 간단한 구조가 있습니다.

struct student_details{
int roll_no;
int marks;
};

이제 총 5명의 학생이 있고 이러한 학생 세부 정보에 대한 사용자의 입력을 수락하는 것이 요구 사항이라고 가정합니다. 그런 다음 이에 대한 코드를 작성하는 한 가지 방법은 다음과 같습니다.

#include <stdio.h>

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 <stdio.h>

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 <stdio.h>

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 Enter roll number: ");
scanf("%d", &(obj[i].roll_no));
printf("\n Enter marks (out of 100): ");
scanf("%d", &(obj[i].marks));
}

printf("\n Here's the data you've entered::");

for(i=0;i<5;i++)
{
printf("\n Roll number: %d", (obj[i].roll_no));
printf("-- Marks: %d", (obj[i].marks));
}


return 0;
}

그래서 여기에서는 앞서 논의한 student_details 구조를 사용하고 해당 유형의 개체 5개로 구성된 배열을 만들었습니다. 그런 다음 프로그램은 사용자에게 학생 명부 번호를 입력하도록 요청하고 하나씩 표시합니다. 각 학생에 해당하는 정보는 구조 배열의 각 인스턴스에 저장됩니다. 마지막으로 저장된 정보는 사용자에게 출력으로 다시 인쇄됩니다.

내 경우의 출력은 다음과 같습니다.

Enter roll number: 1 

Enter marks (out of 100): 67

Enter roll number: 2

Enter marks (out of 100): 73

Enter roll number: 3

Enter marks (out of 100): 56

Enter roll number: 4

Enter marks (out of 100): 52

Enter roll number: 5

Enter marks (out of 100): 85

Here's the data you've entered::
Roll number: 1-- Marks: 67
Roll number: 2-- Marks: 73
Roll number: 3-- Marks: 56
Roll number: 4-- Marks: 52
Roll number: 5-- Marks: 85

이 접근 방식을 사용하면 프로그램을 쉽게 확장할 수 있습니다. 즉, 정보를 저장하고 인쇄해야 하는 학생이 50명이라도 배열 크기를 50으로 늘리고 관련 변경을 거의 하지 않으면 됩니다. 나머지 코드는 동일하게 유지됩니다. 따라서 간단히 말해서 자습서 시작 부분에서 논의한 접근 방식과 비교하여 배열을 사용할 때 확장성을 쉽게 처리할 수 있습니다.

결론

이 가이드에서는 구조 배열의 기본 개념을 다뤘습니다. 이해하기 쉬운 예제를 사용하여 구조 배열이 중요한 이유, 사용 시기 및 사용 방법에 대해 논의했습니다. 컴퓨터에서 이 튜토리얼의 예제를 시도해 보는 것이 좋습니다. 의심이나 질문이 있는 경우 아래에 의견을 남겨주십시오.