C标准库学习笔记之一

暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。

第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。

以下为头文件概述(上)

一、assert.h
1、void assert(int expression);
没有返回值,如果表达式为假则调用中断。
二、ctype.h
1、int isalnum(int c);
检查指定字符是否为数字或字母
2、int isalpha(int c);
检查指定字符是否为字母
3、int iscntrl(int c);
检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
4、int isdigit(int c);
判断指定字符是否为数字
5、int isgraph(int c);
判断指定字符是否为除空格" "以外的所有打印字符。
6、int islower(int c);
判断是否指定字符为小写字符
7、int isprint(int c);
判断是否指定字符是包括" "在内的所有可打印的字符
8、int isspace(int c);
判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
9、isupper(int c);
判断指定字符是否为大写字符。
10、int isxdigit(int c);
可字定义区域设置,默认和isdigit一样。
11、int tolower(int c);
将指定字符转换成小写字符。
12、int toupper(int c);
将指定字符转换成大写字符。
三、errno.h
宏部分
四、float.h
宏部分,测试上下溢
五、limits.h
宏部分
六、locale.h
两个函数、一种类型(struct lconv)、一些宏。
1、char *setlocale(int category,const char* locale);
2、struct lconv *localeconv(void);
七、math.h
三角函数部分:
1、double acos(double x);
计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
2、double asin(double x);
计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
3、double atan(double x);
计算x的三角反正切。返回值范围[-PI/2,PI/2]。
4、double atan2(double y,double x);
计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
5、double cos(double x);
计算x(以弧度为单位)的余弦值。
6、double sin(double x);
计算x(以弧度为单位)的正弦值。
7、double tan(double x);
返回x(以弧度为单位)的正切值。
8、double cosh(double x);
返回x的双曲正弦,若x的值过大,则返回错误。
9、double sinh(double x);
计算x的双曲正弦,如果x的数值太大,则返回错误。
10、double tanh(double x);
计算x的双曲正切。
11、double exp(double x);
计算x的指数函数。
12、double frexp(double value,int *exp);
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
13、double ldexp(double x,int exp);
计算x*2^exp的值并返回。
14、double log(double x);
计算x的自然对数,如果参数为负,则发生值域错误。
15、double log10(double x);
计算x的以10为底的对数。
16、double modf(double value,double *iptr);
将value的整数部分传给iptr,将小数部分返回。
幂函数部分:
1、double pow(double x,double y);
函数计算x的y次幂,要防止值域错误。
2、double sqrt(double x);
函数计算x的非负平方根,如果参数为负,则发生错误。
取整、绝对值、求模部分:
1、double ceil(double x);
返回不小于x的最小整数。变大取整。
2、double fabs(double x);
返回x的绝对值。
3、double floor(double x);
返回不大于x的最大整数。变小取整。
4、double fmod(double x,double y);
返回x/y的余数。
八、setjmp.h
定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
用途饶过常规的函数调用和返回规则。
九、signal.h
同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
void (*signal(int sig,void (*func) (int) )(int);
通过设置三种方式对信号进行处理。
int raise(int sig);
把信号sig发送给正在执行的程序。成功返回0,否则非0。
十、stdarg.h
可变参数列表。定义了一个类型va_list。
宏:
1、void va_start(va_list ap,paramN);
对ap进行初始化。
2、type va_arg(va_list ap,type);
3、void va_end(va_list ap);
十一、stddef.h 被放到了stdlib.h
定义了一些类型:
ptrdiff_t 两个指针相减的有符号整数类型
size_t 用sizeof操作符的结果的无符号整数类型
wchar_t 整值类型
宏:
NULL 展开为实现定义的空指针常量。
offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。

待续……

posted on 2010-04-22 19:45  寻雨  阅读(312)  评论(0编辑  收藏  举报

导航