跳转到内容

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.hstddef.h 头文件定义了宏 NULL,它产生一个空指针常量,表示一个指针值,该值保证不会指向内存中的有效地址。

NULL 可以定义为等于 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_tldiv_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)(除法函数)

参考文献

[编辑 | 编辑源代码]
华夏公益教科书