国际访客建议访问 Primers 编程伙伴 国际版站点 > C 教程 > stdlib.h 以获得更好的体验。

# C 语言标准库头文件 stdlib.h

请查看 C 语言标准库头文件列表 了解更多相关 API。

这个头文件提供 常用的基本功能。例如内存管理,程序终止等。

# 常量

常量 标准 说明
EXIT_SUCCESS C89 表示程序正确执行,通常为 0
EXIT_FAILURE C89 表示程序执行失败,通常为 1

# 函数

程序退出 标准 说明
abort C89 异常中止
exit C89 正常退出
atexit C89 注册 exit 退出前调用的函数
_Exit C99 正常退出
quick_exit C11 快速退出
at_quick_exit C11 注册 quick_exit 退出前调用的函数
内存管理 标准 说明
malloc C89 分配内存
free C89 释放内存
realloc C89 重新分配内存
calloc C89 分配一组内存
aligned_alloc C11 分配对齐的内存
随机数 标准 说明
rand C89 获取随机数
srand C89 设置随机数种子
数学计算 标准 说明
abs C89 计算 int 的绝对值
labs C89 计算 long 的绝对值
llabs C99 计算 long long 绝对值
div C89 计算 int 除法,同时得到商和余数
ldiv C89 计算 long 除法,同时得到商和余数
lldiv C99 计算 long long 除法,同时得到商和余数
字符串转换 标准 说明
atof C89 字符串转 double 浮点数
atoi C89 字符串转 int 整数
atol C89 字符串转 long 整数
atoll C89 字符串转 long long 整数
strtof C99 字符串转 float 浮点数
strtod C99 字符串转 double 浮点数
strtold C99 字符串转 long double 浮点数
strtol C99 字符串转 long 整数
strtoll C99 字符串转 long long 整数
strtoul C99 字符串转 unsigned long 整数
strtoull C99 字符串转 unsigned long long 整数
操作系统 标准 说明
system C89 执行命令
TODO:未完成,待更新。

# 推荐阅读

# 示例

#include <stdio.h>
#include <stdlib.h>  // 包含stdlib.h头文件
#include <time.h>    // 用于time()函数

// 定义比较函数
int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main(void) {
    // 1. 内存分配示例
    printf("=== 内存分配示例 ===\n");
    int *arr = (int*)malloc(5 * sizeof(int));  // 分配5个int大小的内存
    if (arr == NULL) {
        printf("内存分配失败!\n");
        return 1;
    } else {
        printf("内存分配成功!\n");
    }
    
    // 2. 随机数生成示例
    printf("\n=== 随机数生成示例 ===\n");
    srand(time(0));  // 用当前时间初始化随机数种子
    printf("随机数[0,99]: %d\n", rand() % 100);
    
    // 3. 字符串转换示例
    printf("\n=== 字符串转换示例 ===\n");
    char num_str[] = "12345";
    int num = atoi(num_str);  // 字符串转整数
    printf("字符串\"%s\"转换为整数: %d\n", num_str, num);
    
    // 4. 环境变量示例
    printf("\n=== 环境变量示例 ===\n");
    char *path = getenv("PATH");  // 获取PATH环境变量
    if (path != NULL) {
        printf("PATH环境变量: %s\n", path);
    } else {
        printf("PATH环境变量未找到\n");
    }
    
    // 5. 排序示例 (qsort)
    printf("\n=== 排序示例 ===\n");
    for (int i = 0; i < 5; i++) {
        arr[i] = rand() % 100;  // 给数组赋随机值
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    
    qsort(arr, 5, sizeof(int), compare);  // 排序数组
    
    printf("排序后:\n");
    for (int i = 0; i < 5; i++) {
        printf("arr[%d] = %d\n", i, arr[i]);
    }
    
    // 6. 退出程序
    free(arr);  // 释放分配的内存
    printf("\n程序正常退出\n");
    exit(EXIT_SUCCESS);  // 等同于return 0
}

运行结果:

=== 内存分配示例 ===
内存分配成功!

=== 随机数生成示例 ===
随机数[0,99]: 92

=== 字符串转换示例 ===
字符串"12345"转换为整数: 12345

=== 环境变量示例 ===
PATH环境变量: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

=== 排序示例 ===
arr[0] = 74
arr[1] = 0
arr[2] = 64
arr[3] = 73
arr[4] = 28
排序后:
arr[0] = 0
arr[1] = 28
arr[2] = 64
arr[3] = 73
arr[4] = 74

程序正常退出
本文 更新于: 2025-11-27 09:38:07 创建于: 2025-11-27 09:38:07