C 语言 stdlib.h 里面到底定义了那些函数?
坑边闲话:
stdlib.h
是很多 C 语言的初学者第二个接触到的头文件。该头文件非常重要,学习该文件,可以省下很多功夫。大多数谭浩强老师的读者,在学完了malloc
函数之后,就对这个文件知之甚少了。今天我来把其中的所有函数,给大家简单介绍一下。
我曾经自己动手写过一个从一串字符里提取浮点数的算法,GitHub 链接。
后来我才知道,stdlib.h
里面已经定义了一个函数,可以通过这个库函数让我的代码更加精简(当然,它的功能很基础,丰富性不如我的代码)。
工欲善其事,必先利其器。了解库函数是入门第一步;了解所有库,是高手第一步。
1. 关键库函数介绍·
1.1 函数名称 calloc
·
函数原型:void calloc(unsigned n, unsigned size);
函数功能:分配 n
个数据项的内存连续空间,每个数据项的大小为 size
.
函数返回:分配内存单元的起始地址,如果不成功,返回 0
.
1.2 函数名称 free
·
函数原型:void free(void* p);
函数功能:释放 p
所指的内存区
函数返回:无返回值
参数说明:p
是被释放的指针。
1.3 函数名称:malloc
·
函数原型:void * malloc(unsigned size);
函数功能:分配 size
字节的存储区
函数返回:所分配的内存区地址,如果内存不够,返回 0
1.4 函数名称:realloc
·
函数原型:void * realloc(void * p, unsigned size);
函数功能:将 p
所指出的已分配内存区的大小改为 size
, size
可以比原来分配的空间大或小
函数返回:返回指向该内存区的指针。NULL
表示分配失败。
1.5 函数名称:rand
·
函数原型:int rand(void);
函数功能:产生 0
到 32767
间的随机整数(0
到 0x7fff
之间)
函数返回:随机整数。
1.6 函数名称:abort
·
函数原型:void abort(void)
函数功能:异常终止一个进程。
1.7 函数名称:exit
·
函数原型:void exit(int state);
函数功能:程序中止执行,返回调用过程。
函数返回:
参数说明:
- state:
0
正常中止- 非
0
非正常中止
1.8 函数名称:getenv
·
函数原型:char* getenv(const char *name)
函数功能:返回一个指向环境变量的指针
函数返回:环境变量的定义
参数说明:name
是环境字符串
1.9 函数名称:putenv
·
函数原型:int putenv(const char *name)
函数功能:将字符串 name
增加到 DOS 环境变量中。
函数返回:
0
操作成功-1
操作失败
参数说明:name
-环境字符串
1.10 函数名称:labs
·
函数原型:long labs(long num)
函数功能:求长整型参数的绝对值
函数返回:绝对值
1.11 函数名称:atof
·
函数原型:double atof(char *str)
函数功能:将字符串转换成一个双精度数值
函数返回:转换后的数值
参数说明:str
待转换浮点型数的字符串
1.12 函数名称:atoi
·
函数原型:int atoi(char *str)
函数功能:将字符串转换成一个整数值
函数返回:转换后的数值
参数说明:str
- 待转换为整型数的字符串
1.13 函数名称: atol
·
函数原型:long atol(char *str)
函数功能:将字符串转换成一个长整数
函数返回:转换后的数值
参数说明:str
- 待转换为长整型的字符串
1.14 函数名称: ecvt
·
函数原型:char *ecvt(double value, int ndigit, int *dec, int *sign)
函数功能:将浮点数转换为字符串
函数返回:转换后的字符串指针
参数说明:
value
:待转换底浮点数ndigit
:转换后的字符串长度
1.15 函数名称:fcvt
·
函数原型:char *fcvt(double value, int ndigit, int *dec, int *sign)
函数功能:将浮点数变成一个字符串
函数返回:转换后字符串指针
参数说明:
value
,待转换底浮点数ndigit
,转换后底字符串长度
2. 能力提升·
如此一来,大家可以通过这个代码片段了解一下 stdlib.h
里面的函数怎么用。其实非常简单。我写这篇文章的主要目的就是告诉大家,在学习一门语言的过程中,最最重要的就是了解前人已经把哪些工作做完(并且公认做到了最高效率),然后掌握这些方法。C/C++ 如此,Java、Python 更是如此。
1 | /* |