C 编程/stdlib.h
外观
< C 编程
(重定向自 C 编程/C 参考/stdlib.h)stdlib.h 是 C 编程语言的通用标准库的头文件,其中包含涉及内存分配、进程控制、转换和其他功能的函数。它与 C++ 兼容,在 C++ 中被称为 cstdlib
。名称“stdlib”代表“标准库”。
stdlib.h
的成员可以分为以下几类:转换、内存、进程控制、排序和搜索、数学。
名称 | 描述 |
---|---|
类型转换 | |
atof |
字符串到双精度浮点数(不是单精度浮点数) |
atoi |
字符串到整数 |
atol |
字符串到长整数 |
strtod |
字符串到双精度浮点数 |
strtol |
字符串到长整数 |
strtoul |
字符串到无符号长整数 |
strtoll |
字符串到长长整数 |
strtoull |
字符串到无符号长长整数 |
伪随机序列生成 | |
int rand(void) |
生成一个伪随机数 |
int random(void) |
生成一个伪随机数(不是标准 C;由 POSIX 提供) |
void srand(unsigned int seed) |
设置 rand() 伪随机生成器的种子 [常用惯例使用 time() 来播种] |
void srandom(unsigned int seed) |
设置 random() 伪随机生成器的种子 [常用惯例使用 time() 来播种](不是标准 C;由 POSIX 提供) |
内存分配和释放 | |
malloc calloc realloc |
从堆中分配内存 |
free |
将内存释放回堆 |
进程控制 | |
/abort/ |
异常终止执行 |
atexit |
注册一个程序退出时的回调函数 |
exit |
终止程序执行 |
getenv |
检索环境变量 |
system |
执行外部命令 |
排序、搜索和比较 | |
bsearch |
二分搜索数组 |
qsort |
排序数组 |
数学 | |
int abs(int) |
整数的绝对值。 |
long int labs(long int) |
长整数的绝对值。 |
div |
整数除法(返回商和余数) |
ldiv |
长整数除法(返回商和余数) |
多字节/宽字符 | |
mblen |
多字节字符的大小 [1] |
mbtowc, wctomb, mbstowcs, wcstombs |
多字节和宽字符转换 [2] |
stdlib.h
和 stddef.h
头文件定义了宏 NULL
,它产生一个空指针常量,并表示一个指针值,该值保证不指向内存中的有效地址。
NULL 可以定义为等于 int 零、long int 零或零转换为 void * 指针的常量表达式
#define NULL 0
#define NULL 0L
#define NULL ((void *) 0)
虽然空指针常量在 C 中总是由符号常量 0 或转换为 void 指针的 0 来表示,但此类指针的实际位表示是特定于系统的,并且可能包含 1 位。
size_t 定义应通过包含此头文件提供给引用代码。实际上,大多数实现并没有在该文件中直接定义它,而是包含文件 stddef.h,例如,GNU C 编译器的标准库就是这样做的。应用程序代码直接包含 stddef.h 是完全有效的,因此在不需要或不希望从该文件中使用其他成员的情况下,可以替代 stdlib.h。整个头文件设计符合例如 C99 ISO/ANSI 标准定义。 [3]
还定义了两个不太常用的数据类型,div_t
和 ldiv_t
。它们是 div 和 ldiv 函数的返回类型。标准将它们定义为
typedef struct {
int quot, rem;
} div_t;
typedef struct {
long int quot, rem;
} ldiv_t;
/itoa/ 是一个常见函数,包含在 stdlib.h 的许多实现中,但标准没有定义该函数。尽管可以通过 sprintf(标准中定义的函数)实现相同的结果,但直接调用 itoa
的开销远小于通过 sprintf
调用它(或等效函数)。
- stdio.h
- C 标准库
- wchar_t(宽字符)
- div (C)(除法函数)
- ↑ C++ 资源网络 - stdlib.h 访问于 2009 年 12 月 15 日
- ↑ C++ 资源网络 - stdlib.h 访问于 2009 年 12 月 15 日
- ↑ http://www.open-std.org/JTC1/SC22/wg14/www/docs/n1124.pdf 第 7.20 章
- cplusplus.com 上的 stdlib.h 摘要,访问于 2006 年 2 月。
- 为什么 size_t 很重要,访问于 2016 年 5 月。