#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():生成一个介于 0RAND_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 程序中许多基础功能,包括:

  • 动态内存分配 (malloccallocreallocfree)
  • 随机数生成 (randsrand)
  • 进程控制 (exitsystem)
  • 字符串和数值之间的转换 (atoiatofstrtol)
  • 数组排序和查找 (qsortbsearch)

它是一个通用的、实用的库,几乎在每一个 C 程序中都能找到它的使用场景。

标签: none

添加新评论