C의 구조체 배열

Satishkumar Bharadwaj 2023년10월12일
  1. C의struct 배열
  2. C에서malloc()함수를 사용하여 구조 배열 만들기
C의 구조체 배열

이 튜토리얼에서는 C로 구조 배열을 만드는 방법을 소개합니다. 각 변수가 서로 다른 엔티티에 대한 정보를 포함하는 여러 구조 변수의 모음입니다.

C의struct 배열

배열은 동일한 데이터 유형의 순차 콜렉션이고 구조는 사용자 정의 데이터 유형입니다. 구조 배열의 선언은 기본 데이터 유형의 배열과 동일하지만 구조를 사용하면 요소의 데이터 유형이 있습니다.

아래와 같이 Student라는 구조의 예를 고려하십시오.

struct Student {
  int rollNumber;
  char studentName[10];
  float percentage;
};

아래와 같이 구조체 배열을 선언 할 수 있습니다.

struct Student studentRecord[5];

여기서 studentRecord는 각 요소가 구조 Student유형 인 5 개 요소의 배열입니다. 개별 요소는 인덱스 표기법[]를 사용하여 액세스하고 멤버는 도트. 연산자를 사용하여 액세스합니다.

studentRecord[0]는 배열의 ‘0 번째’요소를 가리키고 studentRecord[1]는 배열의 1st요소를 가리 킵니다.

비슷하게,

  • studentRecord[0].rollNumber는 배열 0 번째 요소의rollNumber 멤버를 나타냅니다.
  • studentRecord[0].studentName은 배열 0 번째 요소의studentName 멤버를 나타냅니다.
  • studentRecord[0].percentage는 배열 0 번째 요소의percentage 멤버를 나타냅니다.

C에서구조의 배열을 선언하는 완전한 프로그램은 다음과 같습니다.

#include <stdio.h>
#include <string.h>

struct Student {
  int rollNumber;
  char studentName[10];
  float percentage;
};

int main(void) {
  int counter;
  struct Student studentRecord[5];

  printf("Enter Records of 5 students");

  for (counter = 0; counter < 5; counter++) {
    printf("\nEnter Roll Number:");
    scanf("%d", &studentRecord[counter].rollNumber);
    printf("\nEnter Name:");
    scanf("%s", &studentRecord[counter].studentName);
    printf("\nEnter percentage:");
    scanf("%f", &studentRecord[counter].percentage);
  }

  printf("\nStudent Information List:");

  for (counter = 0; counter < 5; counter++) {
    printf("\nRoll Number:%d\t Name:%s\t Percentage :%f\n",
           studentRecord[counter].rollNumber,
           studentRecord[counter].studentName,
           studentRecord[counter].percentage);
  }
  return 0;
}

출력:

Enter Record of 5 students
Enter Roll number:1
Enter Name: John
Enter percentage: 78

Enter Roll number:2
Enter Name: Nick
Enter percentage: 84

Enter Roll number:3
Enter Name: Jenny
Enter percentage: 56
  
Enter Roll number:4
Enter Name: Jack
Enter percentage: 77
   
Enter Roll number:5
Enter Name: Peter
Enter percentage: 76
    
   Student Information List
   Roll Number: 1		Name: John		percentage:78.000000
   Roll Number: 2		Name: Nick		percentage:84.000000
   Roll Number: 3		Name: Jenny		percentage:56.000000
   Roll Number: 4		Name: Jack		percentage:77.000000
   Roll Number: 5		Name: Peter		percentage:76.000000
       

C에서malloc()함수를 사용하여 구조 배열 만들기

C에 구조의 배열을 만드는 또 다른 방법이 있습니다. 메모리는struct의 배열에 대해malloc()함수를 사용하여 할당 할 수 있습니다. 이를 동적 메모리 할당이라고합니다.

malloc()(메모리 할당) 함수는 지정된 크기의 단일 메모리 블록을 동적으로 할당하는 데 사용됩니다. 이 함수는void 유형의 포인터를 반환합니다.

반환 된 포인터는 모든 형식의 포인터로 캐스팅 될 수 있습니다. 기본 가비지 값으로 각 블록을 초기화합니다.

malloc()함수의 구문은 다음과 같습니다.

ptrVariable = (cast - type*)malloc(byte - size)

구조체 배열을 동적으로 생성하는 완전한 프로그램은 다음과 같습니다.

#include <stdio.h>
int main(int argc, char** argv) {
  typedef struct {
    char* firstName;
    char* lastName;
    int rollNumber;

  } STUDENT;

  int numStudents = 2;
  int x;
  STUDENT* students = malloc(numStudents * sizeof *students);

  for (x = 0; x < numStudents; x++) {
    students[x].firstName = (char*)malloc(sizeof(char*));

    printf("Enter first name :");
    scanf("%s", students[x].firstName);
    students[x].lastName = (char*)malloc(sizeof(char*));
    printf("Enter last name :");
    scanf("%s", students[x].lastName);
    printf("Enter roll number  :");
    scanf("%d", &students[x].rollNumber);
  }

  for (x = 0; x < numStudents; x++)
    printf("First Name: %s, Last Name: %s, Roll number: %d\n",
           students[x].firstName, students[x].lastName, students[x].rollNumber);

  return (0);
}

출력:

Enter first name:John
Enter last name: Williams
Enter roll number:1

Enter first name:Jenny
Enter last name: Thomas
Enter roll number:2
    
First Name: John	Last Name: Williams		Roll Number:1
First Name: Jenny	Last Name: Thomas		Roll Number:2

관련 문장 - C Array

관련 문장 - C Struct