<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()
初始化种子,以避免每次程序运行时生成相同的随机数序列。
通过了解和使用这些函数,您可以更有效地管理内存,提高程序的灵活性和功能性。