C ist vom Design her Barebones. Es kümmert sich um das Wesentliche und überlässt den Rest Ihnen. Es gibt keine integrierten Tastatureingaben oder Bildschirmausgaben. Wenn Sie Text anzeigen möchten, benötigen Sie externe Tools. Hier kommen C-Programmierbibliotheken ins Spiel. Dabei handelt es sich um Teile wiederverwendbaren Codes, die die Grundfunktionen der Sprache erweitern.

Betrachten Sie sie als Plug-Ins für Ihre Logik. Die Standardbibliothek stdio übernimmt die Eingabe und Ausgabe. Andere verwalten Mathematik, Zeichenfolgen oder Zeit. Durch deren Verwendung wird Ihr Projekt in überschaubare Module unterteilt. Dies erleichtert das Debuggen. Außerdem können Sie Arbeitscode aus alten Projekten übernehmen und in neue Projekte einfügen.

Warum modularer Code wichtig ist

Alles in eine Datei zu schreiben, wird schnell chaotisch. Am Ende stehen Hunderte von Zeilen, denen man nur schwer folgen kann. Bibliotheken lösen dieses Problem, indem sie die Funktionalität isolieren. Sie testen eine einzelne Funktion. Sie überprüfen, ob es funktioniert. Dann gehst du weiter.

Das Ergebnis ist saubererer Code. Es ist auch sicherer. Wenn ein Fehler auftritt, wissen Sie genau, welches Modul überprüft werden muss. Sie jagen nicht durch ein monolithisches Skript.

Beispiel: Refactoring der Zufallssortierung

Schauen wir uns ein praktisches Beispiel an. Stellen Sie sich ein Programm vor, das Zufallszahlen generiert, sortiert und ausdruckt. Der ursprüngliche Code könnte wie ein Wirrwarr aussehen.

„c

int a[MAX];
int rand_seed=10;
int rand() {
rand_seed = rand_seed * 1103515245 +12345;
return (unsigned int)(rand_seed / 65536) % 32768;
}
void main() {
int i,t,x,y;
für (i=0; i < MAX; i++) { a[i]=rand(); printf("%d\n",a[i]); } für (x=0; x < MAX-1; x++) für (y=0; y < MAX-x-1; y++) if (a[y] > a[y+1]) {
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
printf(“——————–\n”);
für (i=0; i < MAX; i++) printf("%d\n",a[i]); } „

Dadurch wird ein Array mit Zufallswerten gefüllt. Anschließend wird eine Blasensortierung angewendet. Abschließend wird die sortierte Liste gedruckt. Es funktioniert. Aber es ist nicht wiederverwendbar. Die Sortierlogik ist fest codiert. Die Arraygröße ist fest. Sie können den Sortieralgorithmus oder die Datenquelle nicht einfach austauschen.

Schritt 1: Extrahieren Sie die Sortierfunktion

Der erste Schritt zu einer Bibliothek ist die Extraktion. Nehmen Sie die Blasensortierschleife und verwandeln Sie sie in eine Funktion. Da das Array „a“ ​​und die Konstante „MAX“ in diesem Snippet global sind, benötigt die Funktion keine Parameter dafür. Es muss auch kein Wert zurückgegeben werden.

„c
void bubble_sort(int m) {
int x,y,t;
für (x=0; x < m-1; x++) für (y=0; y < m-x-1; y++) if (a[y] > a[y+1]) {
t=a[y];
a[y]=a[y+1];
a[y+1]=t;
}
}

Beachten Sie die Parameter. Die Funktion benötigt nun „m“, die Anzahl der Elemente. Das macht es flexibel. Sie können ein Array mit 10 Elementen sortieren. Oder ein Array von 100. Sie übergeben einfach die Größe.

Die Hauptfunktion wird einfacher. Es füllt das Array. Es nennt die Sortierung. Es gibt das Ergebnis aus.

„c
void main() {
int i;
für (i=0; i < MAX; i++) { a[i]=rand(); printf("%d\n",a[i]); } bubble_sort(MAX); printf("--------------------\n"); für (i=0; i < MAX; i++) printf("%d\n",a[i]); } „

Das ist besser. Aber es ist immer noch an das globale Array „a“ ​​gebunden. Was ist, wenn Sie ein anderes Array sortieren möchten? Oder Daten von einem anderen Modul übergeben?

Schritt 2: Generalisieren für echte Wiederverwendbarkeit

Um dies wirklich bibliotheksbereit zu machen, übergeben Sie das Array selbst als Parameter. Ändern Sie die Funktionssignatur.

„c
bubble_sort(int m, int a[])

Dies weist den Compiler an, ein ganzzahliges Array beliebiger Größe zu akzeptieren. Der Hauptteil der Funktion ändert sich nicht. Sie übergeben die Daten lediglich an die Logik, anstatt sich auf den globalen Status zu verlassen.

Der Aufruf in „main“ wird geringfügig aktualisiert. Sie übergeben den Array-Namen „a“ und seine Größe „MAX“.

„c
bubble_sort(MAX, a);

Verwenden Sie nicht „&a“. Sie denken vielleicht, dass Sie einen Zeiger auf das gesamte Array benötigen. Du nicht. In C zerfallen Array-Namen bei der Übergabe an Funktionen in Zeiger auf ihr erstes Element. Um diese Unterscheidung zu verstehen, sind Hinweise erforderlich. Aber für den Moment sollten Sie sich nur darüber im Klaren sein, dass „a“ ausreicht.

Warum diese Struktur gewinnt

Du