Array von Structs in C

Satishkumar Bharadwaj 12 Oktober 2023
  1. Array von struct in C
  2. Erzeugen eines Arrays von struct mit der Funktion malloc() in C
Array von Structs in C

Dieses Tutorial stellt vor, wie man ein Array von Strukturen in C erstellt. Es handelt sich um eine Sammlung von mehreren Strukturvariablen, wobei jede Variable Informationen über verschiedene Entitäten enthält.

Array von struct in C

Ein Array ist eine sequentielle Sammlung desselben Datentyps, und eine Struktur ist ein benutzerdefinierter Datentyp. Die Deklaration eines Arrays von Strukturen ist die gleiche wie die eines Arrays der primitiven Datentypen, wobei jedoch die Struktur den Datentyp ihrer Elemente verwendet.

Betrachten Sie ein Beispiel für eine Struktur mit dem Namen Student wie unten:

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

Wir können ein Array von Strukturen wie unten deklarieren.

struct Student studentRecord[5];

Hier ist der studentRecord ein Array mit 5 Elementen, wobei jedes Element vom Typ struct Student ist. Auf die einzelnen Elemente wird mit der Indexschreibweise ([]) zugegriffen, auf die Mitglieder mit dem Punktoperator ..

Der studentRecord[0] zeigt auf das 0te Element des Arrays, und der studentRecord[1] zeigt auf das 1te Element des Arrays.

Ähnlich,

  • Der studentRecord[0].rollNumber verweist auf das rollNumber-Mitglied des 0. Elements des Arrays.
  • Der studentRecord[0].studentName bezieht sich auf den studentName Member des 0ten Elementes des Arrays.
  • Der studentRecord[0].percentage bezieht sich auf den percentage Member des 0ten Elementes des Arrays.

Das vollständige Programm zur Deklaration eines Arrays des struct in C lautet wie folgt.

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

Ausgabe:

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
       

Erzeugen eines Arrays von struct mit der Funktion malloc() in C

Es gibt eine weitere Möglichkeit, ein Array von struct in C zu erstellen. Der Speicher kann mit der Funktion malloc() für ein Array von struct allokiert werden. Dies wird als dynamische Speicherzuweisung bezeichnet.

Die Funktion malloc() (Speicherzuweisung) wird verwendet, um einen einzelnen Speicherblock mit der angegebenen Größe dynamisch zuzuweisen. Diese Funktion gibt einen Zeiger vom Typ void zurück.

Der zurückgegebene Zeiger kann in einen Zeiger beliebiger Form gecastet werden. Sie initialisiert jeden Block mit dem Standard-Garbage-Wert.

Die Syntax der Funktion malloc() ist wie unten dargestellt:

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

Das vollständige Programm zur dynamischen Erstellung eines Arrays von struct sieht wie folgt aus.

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

Ausgabe:

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

Verwandter Artikel - C Array

Verwandter Artikel - C Struct