目录
一、库变量
二、库宏
三、库函数
3.1 free()
3.2 malloc()
3.3 calloc()
3.4 atoi()
3.5 atol()
3.6 rand()
3.7 exit()
3.8 getenv()
stdlib .h 头文件定义了四个变量类型、一些宏和各种通用工具函数。
变量 |
描述 |
size_t |
这是无符号整数类型,它是 sizeof 关键字的结果 |
wchar_t |
这是一个宽字符常量大小的整数类型。 |
div_t |
这是 div 函数返回的结构。 |
ldiv_t |
这是 ldiv 函数返回的结构。 |
宏 |
描述 |
NULL |
是一个空指针常量的值。 |
EXIT_FAILURE |
是 exit 函数失败时要返回的值。 |
EXIT_SUCCESS |
是 exit 函数成功时要返回的值。 |
RAND_MAX |
是 rand 函数返回的最大值。 |
MB_CUR_MAX |
表示在多字节字符集中的最大字符数,不能大于 MB_LEN_MAX。 |
描述:是C语言中释放内存空间的函数,通常与申请内存空间的函数malloc()结合使用,可以释放由 malloc()、calloc()、realloc() 等函数申请的内存空间。
声明:void free(void *ptr)
参数:ptr -- 指针指向一个要释放内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。
#include
int main()
{
char *str; /* 最初的内存分配 */
str = (char *) malloc(15);
strcpy(str, "hello world");
printf("String = %s, Address = %p\n", str, str); /* 重新分配内存 */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %p\n", str, str); /* 释放已分配的内存 */
free(str); return(0);
}
描述:分配所需的内存空间,并返回一个指向它的指针。
声明:void *malloc(size_t size)
参数:size -- 内存块的大小,以字节为单位。
#include
#include
#include
int main()
{
char *str;
/* 最初的内存分配 */
str = (char *) malloc(15);
strcpy(str, "Hello");
printf("String = %s, Address = %u\n", str, str);
/* 重新分配内存 */
str = (char *) realloc(str, 25);
strcat(str, "World");
printf("String = %s, Address = %u\n", str, str);
free(str);
return(0);
}
描述:在内存的动态存储区中分配num个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL。
声明:void *calloc(size_t nitems, size_t size)
参数:nitems -- 要被分配的元素个数; size -- 元素的大小。
#include
#include
int main()
{
int i, n;
int *a;
printf("要输入的元素个数:");
scanf("%d",&n);
a = (int*)calloc(n, sizeof(int));
printf("输入 %d 个数字:\n",n);
for( i=0 ; i < n ; i++ )
{
scanf("%d",&a[i]);
}
printf("输入的数字为:");
for( i=0 ; i < n ; i++ ) {
printf("%d ",a[i]);
}
free (a); // 释放内存
return(0);
}
描述:把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。
声明:int atoi(const char *str)
参数:str -- 要转换为整数的字符串。
#include
#include
#include
int main()
{
int val;
char str[20];
strcpy(str, "666.666");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n", str, val);
strcpy(str, "hello world");
val = atoi(str);
printf("字符串值 = %s, 整型值 = %d\n", str, val);
return(0);
}
描述:把参数 str 所指向的字符串转换为一个长整数(类型为 long int 型)。
声明:long int atol(const char *str)
参数:str -- 要转换为长整数的字符串。
#include
#include
#include
int main()
{
long val;
char str[20];
strcpy(str, "666.666");
val = atol(str);
printf("字符串值 = %s, 长整型值 = %ld\n", str, val);
strcpy(str, "hello world");
val = atol(str);
printf("字符串值 = %s, 长整型值 = %ld\n", str, val);
return(0);
}
描述:返回一个范围在 0 到 RAND_MAX 之间的伪随机数。
RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。
声明:int rand(void)
#include
#include
#include
int main()
{
int i, n;
time_t t;
n = 5;
/* 初始化随机数发生器 */
srand((unsigned) time(&t));
/* 输出 0 到 99 之间的 5 个随机数 */
for( i = 0 ; i < n ; i++ ) {
printf("%d\n", rand() % 100);
}
return(0);
}
描述:立即终止调用进程。任何属于该进程的打开的文件描述符都会被关闭,该进程的子进程由进程 1 继承,初始化,且会向父进程发送一个 SIGCHLD 信号。
RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。
声明:void exit(int status)
参数:status -- 返回给父进程的状态值。
#include
#include
int main ()
{
printf("程序的开头....\n");
printf("退出程序....\n");
exit(0);
printf("程序的结尾....\n");
return(0);
}
描述:从环境中取字符串,获取环境变量的值。getenv函数的返回值存储在一个全局二维数组里,当你再次使用getenv函数时不用担心会覆盖上次的调用结果。
声明:char *getenv(const char *name)
参数:name -- 包含被请求变量名称的 C 字符串。
#include
#include
int main(void)
{
char* s=NULL;
s=getenv("COMSPEC"); /* 获取 comspec 环境参数 */
printf("Command processor: %s\n",s);
return 0;
}