C 标准库 - <stdlib.h>详解

简介: `<stdlib.h>` 是 C 语言标准库中的头文件,提供了多种工具和函数,涵盖内存管理、进程控制、转换及随机数生成等功能。其中包括 `malloc`、`calloc` 和 `free` 等内存管理函数,`atoi` 和 `atof` 等转换函数,以及 `rand` 和 `srand` 等随机数生成函数。此外,还提供了 `exit` 和 `atexit` 等程序控制函数,以及 `getenv` 和 `system` 等环境控制函数。

<stdlib.h> 是 C 语言标准库中的一个头文件,它提供了许多通用的工具和函数,用于内存管理、进程控制、转换和随机数生成等。以下是对 <stdlib.h> 中常用功能和函数的详细解读:

1. 内存管理函数

  • malloc(size_t size): 动态分配size字节的内存,并返回指向该内存块的指针。如果分配失败,返回 NULL

  • calloc(size_t num, size_t size): 动态分配内存以存储 numsize 字节的对象,并初始化所有位为零。如果分配失败,返回 NULL

  • realloc(void *ptr, size_t size): 重新分配指针 ptr 指向的内存块的大小为 size 字节。返回新的内存块指针,如果分配失败,返回 NULL

  • free(void *ptr): 释放由 malloccallocrealloc 所分配的内存。

2. 转换函数

  • atoi(const char *str): 将字符串 str 转换为整数。

  • atof(const char *str): 将字符串 str 转换为双精度浮点数。

  • `strtol(const char *str, char endptr, int base)**: 将字符串str转换为长整数,base指定转换的基数,可以是 2-36 或 0(根据str` 的格式自动推断)。

  • `strtod(const char *str, char endptr)**: 将字符串str` 转换为双精度浮点数。

3. 随机数生成函数

  • rand(void): 生成一个伪随机整数。

  • srand(unsigned int seed): 设置随机数生成器的种子为 seed。通常在程序开始时调用一次,以确保生成的随机数序列不同。

4. 程序退出控制

  • exit(int status): 终止程序的执行,status 通常为 0 表示成功,非零值表示错误。

  • atexit(void (*func)(void)): 注册一个函数 func,该函数在 exit() 被调用时执行。

5. 环境控制

  • getenv(const char *name): 返回环境变量 name 的值,若不存在则返回 NULL

  • system(const char *command): 在命令行中执行 command 并返回结果。

6. 数学常量和宏

  • RAND_MAX: 表示 rand() 函数可能返回的最大值。

使用示例

#include <stdio.h>
#include <stdlib.h>

int main() {
   
    // 动态内存分配示例
    int *array;
    size_t n = 5;
    array = (int *)malloc(n * sizeof(int));

    if (array == NULL) {
   
        fprintf(stderr, "Memory allocation failed\n");
        return 1;
    }

    // 初始化并打印数组
    for (size_t i = 0; i < n; i++) {
   
        array[i] = i * i;
        printf("%d ", array[i]);
    }

    // 释放内存
    free(array);

    // 随机数生成示例
    srand(time(NULL)); // 使用当前时间作为种子
    printf("\nRandom number: %d\n", rand());

    // 字符串转换示例
    const char *numStr = "1234";
    int num = atoi(numStr);
    printf("Converted number: %d\n", num);

    return 0;
}

注意事项

  1. 使用动态分配内存时,确保在使用后调用 free()
  2. 在任何情况下,检查返回值以处理内存分配失败或字符串转换失败的情况。
  3. 随机数生成器应确保通过 srand() 初始化种子,以避免每次程序运行时生成相同的随机数序列。

通过了解和使用这些函数,您可以更有效地管理内存,提高程序的灵活性和功能性。

相关文章
|
Python
python自动生成含样式的Excel表格数据案例
python自动生成含样式的Excel表格数据案例
463 1
扩展ASCII编码(Extended ASCII或8-bit ASCII)
扩展ASCII编码(Extended ASCII或8-bit ASCII)
3143 5
|
8月前
|
Java 开发者
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
718 0
|
开发者
C 标准库 - <stdio.h>详解
`&lt;stdio.h&gt;` 是 C 标准库中用于处理输入和输出(I/O)的头文件,提供了多种功能,如格式化输入输出、文件操作等。
|
机器学习/深度学习 数据可视化 算法
2023年美赛C题 预测Wordle结果Predicting Wordle Results这题太简单了吧
本文提供了2023年美赛C题"预测Wordle结果"的详细建模方案、Python代码实现、数据和图片,包括对Wordle游戏规则的理解、数据分析、模型构建和结果预测,以及如何撰写给《纽约时报》字谜编辑的信件。
296 1
2023年美赛C题 预测Wordle结果Predicting Wordle Results这题太简单了吧
|
存储 安全 开发者
C 标准库 - <string.h>详解
`&lt;string.h&gt;` 是 C 标准库中用于处理字符串的头文件,提供了复制、拼接、比较、查找等操作。常用函数包括 `strcpy`、`strncpy`、`strcat`、`strncat`、`strlen`、`strcmp`、`strncmp`、`strchr` 和 `strstr`。此外,还提供了辅助函数如 `memcpy` 和 `memset`。这些函数帮助开发者有效处理字符串,构建更强大的 C 程序。注意事项包括确保目标数组空间足够、正确处理 null 结束符,并使用安全版本函数减少风险。
772 11
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
2351 4
|
存储 前端开发 安全
如何处理大文件上传
【4月更文挑战第20天】
1342 9
|
NoSQL 关系型数据库 MySQL
多机部署:打造内网服务器集群
在多机部署教程中,了解如何配置分布式应用如Laravel以使用Redis同步用户状态。关键步骤包括:修改MySQL的`bind-address`至内网IP,重启服务;同样修改Redis的`bind`,重启服务;以及调整Elasticsearch的`network.host`和`discovery.seed_hosts`,并重启。通过这些步骤,确保服务间能内网通信,实现多服务器状态同步。
463 2

热门文章

最新文章