C - Arrays of Structures
Hallo zusammen, angehende Programmierer! Heute machen wir uns auf eine aufregende Reise in die Welt der C-Programmierung, Specifically erkunden wir Arrays von Strukturen. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind; ich werde Sie bei jedem Schritt mit der gleichen Geduld und Begeisterung führen, die ich seit Jahren in meinen Klassenzimmern verwendet habe. Lassen Sie uns eintauchen!
Was sind Strukturen und Arrays?
Bevor wir uns den Arrays von Strukturen zuwenden, lassen Sie uns schnell nochmal复习 was Strukturen und Arrays einzeln sind.
Strukturen
Eine Struktur in C ist wie ein Behälter, der verschiedene Arten von Daten aufnehmen kann. Stellen Sie sich einen Rucksack vor, in dem Sie verschiedene Gegenstände verstauen können - das ist Ihre Struktur! Zum Beispiel:
struct Student {
char name[50];
int age;
float gpa;
};
Hier kann unsere Student
-Struktur einen Namen, ein Alter und einen GPA aufnehmen. quite cool, oder?
Arrays
Ein Array andererseits ist eine Sammlung von Elementen desselben Typs. Stellen Sie es sich als eine Reihe identischer Schränke vor, die die gleiche Art von Gegenstand enthalten. Zum Beispiel:
int numbers[5] = {1, 2, 3, 4, 5};
Dieses Array namens numbers
kann 5 Ganzzahlen aufnehmen.
Was wäre, wenn wir diese beiden Konzepte kombinieren? Dann passiert das Magische!
Arrays of Structures
Ein Array von Strukturen ist genau das, was es klingt - ein Array, bei dem jedes Element eine Struktur ist. Es ist wie ein Klassenzimmer voller Schüler, jeder mit seinen eigenen Merkmalen.
Lassen Sie uns erkunden, wie man mit diesen mächtigen Konstrukten arbeitet!
Deklaration einer Struct-Array
Um ein Array von Strukturen zu deklarieren, definieren wir zuerst unsere Struktur,然后创建该结构体类型的数组. So sieht es aus:
struct Student {
char name[50];
int age;
float gpa;
};
struct Student class[30];
In diesem Beispiel haben wir ein Array namens class
erstellt, das Informationen für 30 Schüler aufnehmen kann. Es ist wie 30 Schülerkarten, jede mit einem Namen, Alter und GPA.
Initialisierung einer Struct-Array
Nun, da wir unser Array deklariert haben, lassen Sie uns es mit einigen Daten füllen. Wir können dies auf zwei Arten tun:
- Initialisieren bei der Deklaration:
struct Student class[3] = {
{"Alice", 20, 3.8},
{"Bob", 22, 3.5},
{"Charlie", 21, 3.9}
};
- Initialisieren nach der Deklaration:
strcpy(class[0].name, "Alice");
class[0].age = 20;
class[0].gpa = 3.8;
strcpy(class[1].name, "Bob");
class[1].age = 22;
class[1].gpa = 3.5;
// ... und so weiter
Denken Sie daran, dass wir bei der Arbeit mit Zeichenfolgen in C strcpy
verwenden, um Werte an char-Arrays zuzuweisen.
Einlesen einer Struct-Array
Das Lesen aus einer Struct-Array ist einfach. Wir können einzelne Elemente mit Array-Indizierung und der Punktnotation für Strukturmitglieder zugreifen:
printf("Student Name: %s\n", class[0].name);
printf("Student Age: %d\n", class[0].age);
printf("Student GPA: %.2f\n", class[0].gpa);
Wir können auch Schleifen verwenden, um durch das gesamte Array zu lesen:
for (int i = 0; i < 3; i++) {
printf("Student %d:\n", i+1);
printf("Name: %s\n", class[i].name);
printf("Age: %d\n", class[i].age);
printf("GPA: %.2f\n\n", class[i].gpa);
}
Dieser Code wird Informationen für alle drei Schüler in unserem class
-Array ausgeben.
Sortieren einer Struct-Array
Das Sortieren eines Arrays von Strukturen ist etwas komplexer, aber keine Sorge - wir werden es Schritt für Schritt durchbrechen. Angenommen, wir möchten unsere Schüler nach ihrem GPA in absteigender Reihenfolge sortieren:
#include <string.h>
void swap(struct Student *a, struct Student *b) {
struct Student temp = *a;
*a = *b;
*b = temp;
}
void sortByGPA(struct Student arr[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-i-1; j++) {
if (arr[j].gpa < arr[j+1].gpa) {
swap(&arr[j], &arr[j+1]);
}
}
}
}
// Verwendung:
sortByGPA(class, 3);
Dieser Code verwendet den Bubble-Sort-Algorithmus, um unsere Schüler basierend auf ihren GPAs anzuordnen. Nach dem Aufruf von sortByGPA
wird das class
-Array mit dem höchsten GPA zuerst sortiert.
Deklaration eines Pointers auf eine Struct-Array
Pointer sind mächtige Werkzeuge in C, und wir können sie auch mit unseren Struct-Arrays verwenden. So deklarieren Sie einen Pointer zu unserem Struct-Array:
struct Student *classPtr = class;
Jetzt zeigt classPtr
auf das erste Element unseres class
-Arrays. Wir können diesen Pointer verwenden, um auf Elemente zuzugreifen:
printf("First student's name: %s\n", classPtr->name);
printf("Second student's age: %d\n", (classPtr+1)->age);
Beachten Sie die Verwendung des Pfeil-Operators (->
) bei der Arbeit mit Pointern auf Strukturen.
Schlussfolgerung
Glückwunsch! Sie haben gerade einen großen Schritt in Ihrer C-Programmierreise gemacht. Arrays von Strukturen sind unglaublich nützlich in realen Programmierszenarien. Stellen Sie sich vor, eine Schuldatenbank zu verwalten, einen Bibliothekskatalog zu organisieren oder das Lagerbestand in einem Geschäft zu verfolgen - alle diese Aufgaben werden mit Arrays von Strukturen viel einfacher.
Denken Sie daran, Übung macht den Meister. Versuchen Sie, eigene Struct-Arrays zu erstellen, füllen Sie sie mit Daten, sortieren Sie sie und experimentieren Sie mit verschiedenen Möglichkeiten, die Daten zu manipulieren. Bevor Sie es wissen, werden Sie wie ein Profi codieren!
Frohes Coden und möge Ihre Arrays immer korrekt indiziert sein!
Credits: Image by storyset