C-Standardbibliothek -<stdlib.h>
Einführung
stdlib .hDie Header-Datei definiert vier Variablentypen, einige Makros und verschiedene allgemeine Hilfsfunktionen.
<stdlib.h>ist eine Header-Datei in der C-Standardbibliothek, die viele allgemeine Hilfsfunktionen bereitstellt, einschließlich Speicherzuweisung, Prozesssteuerung, Sortieren und Suchen sowie Zeichenkettenkonvertierung, unter anderem.
Bibliotheksvariablen
Die folgenden Variablentypen sind in der Header-Datei stdlib.h definiert:
| Laufende Nummer | Variablen & Beschreibung |
|---|---|
| 1 | size_t Dies ist ein vorzeichenloser Ganzzahltyp, der das Ergebnis des Schlüsselwortssizeofist. |
| 2 | wchar_t Dies ist ein Ganzzahltyp für die Größe einer Breitzeichenkonstante. |
| 3 | div_t Dies ist die Struktur, die von der Funktiondivzurückgegeben wird. |
| 4 | ldiv_t Dies ist die Struktur, die von der Funktionldivzurückgegeben wird. |
Bibliotheksmakros
Die folgenden Makros sind in der Headerdatei stdlib.h definiert:
| Laufende Nummer | Makros & Beschreibung |
|---|---|
| 1 | NULL Dieses Makro ist der Wert einer Nullzeigerkonstante. |
| 2 | EXIT_FAILURE Dies ist der Wert, der zurückgegeben werden soll, wenn die Funktion exit fehlschlägt. |
| 3 | EXIT_SUCCESS Dies ist der Wert, der zurückgegeben werden soll, wenn die Funktion exit erfolgreich ist. |
| 4 | RAND_MAX 这个宏是 rand 函数返回的最大值。 |
| 5 | MB_CUR_MAX 这个宏表示多字节字符集中的最大字符数,它不能大于 MB_LEN_MAX. |
Bibliotheksfunktionen
以下是头文件 stdlib.h 中定义的函数:
| Laufende Nummer | Funktionen & Beschreibung |
|---|---|
| 1 | double atof(const char *str) 把参数str所指向的字符串转换为浮点数(double 类型)。 |
| 2 | int atoi(const char *str) 把参数str所指向的字符串转换为整数(int 类型)。 |
| 3 | long int atol(const char *str) 把参数str所指向的字符串转换为长整数(long int 类型)。 |
| 4 | double strtod(const char *str, char **endptr) 把参数str所指向的字符串转换为浮点数(double 类型)。 |
| 5 | long int strtol(const char *str, char **endptr, int base) 把参数str所指向的字符串转换为长整数(long int 类型)。 |
| 6 | unsigned long int strtoul(const char *str, char **endptr, int base) Übergeben Sie den ParameterstrKonvertiert die Zeichenkette, auf die gezeigt wird, in eine vorzeichenlose lange Ganzzahl (vom Typ unsigned long int). |
| 7 | void *calloc(size_t nitems, size_t size) Weist den erforderlichen Speicherplatz zu und gibt einen Zeiger darauf zurück. |
| 8 | void free(void *ptr) Vor dem Freigeben aufrufencalloc、mallocoderreallocden zugewiesenen Speicherplatz. |
| 9 | void *malloc(size_t size) Weist den erforderlichen Speicherplatz zu und gibt einen Zeiger darauf zurück. |
| 10 | void *realloc(void *ptr, size_t size) Vor dem Versuch, die Größe zu ändern, aufrufenmallocodercallocdie Größe des zugewiesenen Speicherblocks, auf den ptr zeigt. |
| 11 | void abort(void) Verursacht einen abnormalen Programmabbruch. |
| 12 | int atexit(void (*func)(void)) Ruft die angegebene Funktion auf, wenn das Programm normal beendet wird.func。 |
| 13 | void exit(int status) Bewirkt, dass das Programm normal beendet wird. |
| 14 | char *getenv(const char *name) Sucht nach der Umgebungszeichenkette, auf die name zeigt, und gibt den zugehörigen Wert als Zeichenkette zurück. |
| 15 | int system(const char *string) Der durch string angegebene Befehl wird an die Hostumgebung zur Ausführung durch den Befehlsprozessor übergeben. |
| 16 | void *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *)) Führt eine binäre Suche durch. |
| 17 | void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) Sortiert das Array. |
| 18 | int abs(int x) Gibt den Absolutbetrag von x zurück. |
| 19 | div_t div(int numer, int denom) Dividiert den Zähler durch den Nenner. |
| 20 | long int labs(long int x) Gibt den Absolutbetrag von x zurück. |
| 21 | ldiv_t ldiv(long int numer, long int denom) Dividiert den Zähler durch den Nenner. |
| 22 | int rand(void) Gibt einen Bereich von 0 bisRAND_MAXeine Pseudozufallszahl dazwischen zurück. |
| 23 | void srand(unsigned int seed) Diese Funktion initialisiert den Zufallszahlengenerator, der von der Funktionrandverwendet wird. |
| 24 | int mblen(const char *str, size_t n) RückgabeparameterstrDie Länge des Multibyte-Zeichens, auf das gezeigt wird. |
| 25 | size_t mbstowcs(schar_t *pwcs, const char *str, size_t n) Übergibt den ParameterstrDie Multibyte-Zeichenkette, auf die gezeigt wird, wird in Parameter umgewandelt.pwcsDas Array, auf das sie zeigt. |
| 26 | int mbtowc(wchar_t *pwc, const char *str, size_t n) Parameter prüfenstrDas Multibyte-Zeichen, auf das gezeigt wird. |
| 27 | size_t wcstombs(char *str, const wchar_t *pwcs, size_t n) Setze das ArraypwcsDie darin gespeicherte Kodierung wird in Multibyte-Zeichen umgewandelt und in der ZeichenkettestrIn. |
| 28 | int wctomb(char *str, wchar_t wchar) Prüft den ParameterwcharDie Kodierung des angegebenen Multibyte-Zeichens. |
Beispiel
Das Folgende verwendet<stdlib.h>Beispiele für einige Funktionen in.
Dynamische Speicherzuweisung:
Beispiel
#include <stdlib.h>
int main() {
int *array = (int*)malloc(10 * sizeof(int));
if (array == NULL) {
perror("Speicherzuweisung fehlgeschlagen");
return 1;
}
for (int i = 0; i < 10; i++) {
array[i] = i;
printf("%d ", array[i]);
}
printf("\n");
free(array);
return 0;
}
Erzeugung von Pseudozufallszahlen:
Beispiel
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
for (int i = 0; i < 10; i++) {
printf("%d ", rand() % 100);
}
printf("\n");
return 0;
}
Zeichenkettenkonvertierung:
Beispiel
#include <stdlib.h>
int main() {
const char *str = "12345";
int num = atoi(str);
printf("Der Ganzzahlwert ist %d\n", num);
return 0;
}
Quicksort:
Beispiel
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int array[] = {5, 2, 9, 1, 5, 6};
int size = sizeof(array⟦⟧sizeof) / sizeof(array[0]);
qsort(array, size, sizeof(int), compare);
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("\n");
return 0;
}
Hinweise
- Nutzung
malloc、callocundreallocDer zugewiesene Speicher muss freigegeben werden mitfreeum Speicherlecks zu vermeiden. atoi、atolundatofDie Funktion bietet keine Fehlerprüfung; stellen Sie bei der Verwendung sicher, dass das Eingabeformat korrekt ist. Es wird empfohlen,strtol、strtoulundstrtodsicherere Konvertierungen durchzuführen.qsortundbsearchDie Funktion erfordert eine benutzerdefinierte Vergleichsfunktion, um unterschiedliche Datentypen und Sortieranforderungen zu behandeln.
Durch das Verstehen und Verwenden<stdlib.h>Die bereitgestellten Funktionen ermöglichen Operationen wie Speicherverwaltung, Prozesssteuerung, Zufallszahlengenerierung, Umgebungsverwaltung, mathematische Konvertierungen sowie Sortieren und Suchen in C-Programmen, wodurch das Schreiben flexiblerer und funktionsreicherer Programme ermöglicht wird.