stdlib.h
#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 程序中都能找到它的使用场景。