#include <stdlib.h> 是 C 标准库的一个头文件,它包含了许多与内存分配、进程控制、随机数生成、排序/搜索以及数据类型转换等相关的函数声明。这个头文件在 C 和 C++ 中都被广泛使用。
以下是 stdlib.h 中一些常用的函数和它们的用途:
1. 动态内存分配
malloc():分配一块未初始化的内存。void* malloc(size_t size);例如:
int* arr = (int*) malloc(10 * sizeof(int));calloc():分配一块内存并将其初始化为零。void* calloc(size_t num, size_t size);例如:
int* arr = (int*) calloc(10, sizeof(int));realloc():重新调整已分配的内存块的大小。void* realloc(void* ptr, size_t new_size);例如:
arr = (int*) realloc(arr, 20 * sizeof(int));free():释放动态分配的内存。void free(void* ptr);例如:
free(arr);
2. 随机数生成
rand():生成一个介于0和RAND_MAX之间的随机整数。int rand(void);例如:
int random_value = rand();srand():设置随机数生成器的种子,常用于生成不同的随机数序列。void srand(unsigned int seed);例如:
srand(time(NULL)); // 使用当前时间作为种子
3. 进程控制
exit():终止程序执行,并返回一个状态码。void exit(int status);例如:
exit(0); // 正常退出system():执行系统命令。int system(const char* command);例如:
system("ls"); // 在Linux系统中列出目录内容
4. 类型转换
atoi():将字符串转换为整数。int atoi(const char* str);例如:
int num = atoi("123");atof():将字符串转换为浮点数。double atof(const char* str);例如:
double num = atof("123.45");atol():将字符串转换为长整数。long atol(const char* str);strtol()、strtod():这些函数提供了更灵活的字符串到数值转换方式,可以指定进制或错误处理。long int strtol(const char* str, char** endptr, int base);
5. 排序与查找
qsort():使用快速排序算法对数组进行排序。void qsort(void* base, size_t num, size_t size, int (*compar)(const void*, const void*));例如,排序一个整型数组:
int compare(const void* a, const void* b) { return (*(int*)a - *(int*)b); } qsort(arr, n, sizeof(int), compare);bsearch():使用二分查找在已排序的数组中查找元素。void* bsearch(const void* key, const void* base, size_t num, size_t size, int (*compar)(const void*, const void*));
6. 环境变量
getenv():获取环境变量的值。char* getenv(const char* name);例如:
char* path = getenv("PATH");
总结
#include <stdlib.h> 头文件提供了 C 程序中许多基础功能,包括:
- 动态内存分配 (
malloc、calloc、realloc、free) - 随机数生成 (
rand、srand) - 进程控制 (
exit、system) - 字符串和数值之间的转换 (
atoi、atof、strtol) - 数组排序和查找 (
qsort、bsearch)
它是一个通用的、实用的库,几乎在每一个 C 程序中都能找到它的使用场景。