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 dasrollNumber
-Mitglied des 0. Elements des Arrays. - Der
studentRecord[0].studentName
bezieht sich auf denstudentName
Member des 0ten Elementes des Arrays. - Der
studentRecord[0].percentage
bezieht sich auf denpercentage
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
- Char-Array in C kopieren
- Dynamisches Zuweisen eines Arrays in C
- Array von Zeichenketten in C
- Char-Array in C drucken
- Char-Array in C initialisieren
- Char-Array löschen in C