stdlib.h
是 C 语言中的一个标准库头文件,它提供了多种通用功能的函数,包括内存管理、随机数生成、字符串转换和程序控制等。这个库在处理各种数据结构和算法时非常有用,因此对于任何想要深入学习和使用 C 语言的开发者来说,了解 stdlib.h
中的函数是非常重要的。
内存分配与释放
malloc() 函数
malloc()
函数用于动态分配内存。它接受一个参数,表示需要分配的字节数,并返回指向该内存区域的指针。如果分配失败,则返回空指针(NULL)。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - --- -- - ---- -------------------- - --- -- -- -- ----- - ------------------- ------ -- - -- -- - ----- --- ---- - - -- - - -- ---- - ---- - -- - -------- -- ---- ------ -- -
calloc() 函数
calloc()
函数用于分配并初始化一块内存。它接受两个参数,第一个参数是元素的数量,第二个参数是每个元素的大小(以字节为单位)。calloc()
返回的内存会被初始化为零。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - --- -- - ---- ----------- ------------- -- -- -- ----- - ------------------- ------ -- - -- -------- --- ---- - - -- - - -- ---- - ---------- -- ------ - -------- -- ---- ------ -- -
realloc() 函数
realloc()
函数用于改变之前通过 malloc()
或 calloc()
分配的内存块的大小。它接受两个参数,第一个参数是要调整大小的内存块的指针,第二个参数是新的大小(以字节为单位)。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - --- -- - ---- -------------------- - --- -- -- -- ----- - ------------------- ------ -- - -- ------ - - ---- ------------ ----------- - ---- -- -- -- ----- - ------------------- ------ -- - -- -- - ------ --- ---- - - -- - - --- ---- - ---- - -- - -------- -- ---- ------ -- -
free() 函数
free()
函数用于释放之前通过 malloc()
、calloc()
或 realloc()
分配的内存块。释放后的内存不能再被访问,否则会导致未定义行为。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - --- -- - ---- -------------------- - --- -- -- -- ----- - ------------------- ------ -- - -- -- - ----- --- ---- - - -- - - -- ---- - ---- - -- - -------- -- ---- ------ -- -
随机数生成
rand() 函数
rand()
函数用于生成伪随机数。它不接受任何参数,返回一个介于 0 和 RAND_MAX
之间的整数。为了确保每次运行程序时产生的随机数序列不同,可以在调用 rand()
之前使用 srand()
函数进行初始化。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- -------- -------- --- ------ - ------------------ -- --------- --- ---- - - -- - - -- ---- - ---------- -- -------- - ------ -- -
srand() 函数
srand()
函数用于设置随机数生成器的种子。通常情况下,使用当前时间作为种子可以产生不同的随机数序列。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- -------- -------- --- ------ - ------------------ -- ---------- --- ---- - - -- - - -- ---- - ---------- -- -------- - ------ -- -
字符串转换
atoi() 函数
atoi()
函数用于将字符串转换成整数。它接受一个字符串参数,返回相应的整数值。如果字符串无法转换成整数,则返回 0。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - ----- ---- ---- - ------ --- --- - ---------- --------------------- ----- ------ -- -
atof() 函数
atof()
函数用于将字符串转换成浮点数。它接受一个字符串参数,返回相应的浮点数值。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - ----- ---- ---- - ---------- ------ --- - ---------- ---------------------- ----- ------ -- -
atol() 函数
atol()
函数用于将字符串转换成长整型。它接受一个字符串参数,返回相应的长整型值。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - ----- ---- ---- - ------------- ---- --- - ---------- ----------------------- ----- ------ -- -
程序控制
exit() 函数
exit()
函数用于终止程序的执行。它接受一个整数参数,作为程序退出的状态码。通常情况下,0 表示正常退出,非零值表示异常退出。例如:
#include <stdio.h> #include <stdlib.h> int main() { printf("程序即将退出\n"); exit(0); // 正常退出 return 0; }
abort() 函数
abort()
函数用于强制终止程序的执行。它不接受任何参数,并且不会清理资源或执行任何清理工作。通常用于处理不可恢复的错误情况。例如:
#include <stdio.h> #include <stdlib.h> int main() { printf("程序即将异常退出\n"); abort(); // 异常退出 return 0; }
getenv() 函数
getenv()
函数用于获取环境变量的值。它接受一个字符串参数,表示环境变量的名称,并返回一个指向该环境变量值的指针。如果环境变量不存在,则返回 NULL。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - ----- ---- ------ - --------------- -- ------ -- ----- - ------------ ------------- ------- - ---- - ------------ ------------ - ------ -- -
system() 函数
system()
函数用于执行系统命令。它接受一个字符串参数,表示要执行的命令,并返回一个整数值。返回值取决于具体的实现和命令的执行结果。例如:
-- -------------------- ---- ------- -------- --------- -------- ---------- --- ------ - --- --- - ------------ ------ --------- -- ---- -- --- - ------------------- - ---- - ------------------- - ------ -- -
以上是 stdlib.h
头文件中一些常用函数的详细介绍。熟练掌握这些函数能够帮助你在 C 语言编程中更加高效地进行内存管理、随机数生成、字符串转换以及程序控制。