<stdlib.h> 是 C 语言标准库中的一个头文件,它提供了许多通用的工具和函数,用于内存管理、进程控制、转换和随机数生成等。以下是对 <stdlib.h> 中常用功能和函数的详细解读:
1. 内存管理函数
malloc(size_t size): 动态分配size字节的内存,并返回指向该内存块的指针。如果分配失败,返回NULL。calloc(size_t num, size_t size): 动态分配内存以存储num个size字节的对象,并初始化所有位为零。如果分配失败,返回NULL。realloc(void *ptr, size_t size): 重新分配指针ptr指向的内存块的大小为size字节。返回新的内存块指针,如果分配失败,返回NULL。free(void *ptr): 释放由malloc、calloc或realloc所分配的内存。
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;
}
注意事项
- 使用动态分配内存时,确保在使用后调用
free()。 - 在任何情况下,检查返回值以处理内存分配失败或字符串转换失败的情况。
- 随机数生成器应确保通过
srand()初始化种子,以避免每次程序运行时生成相同的随机数序列。
通过了解和使用这些函数,您可以更有效地管理内存,提高程序的灵活性和功能性。