TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。1 Q$ O+ F8 L8 ?3 h$ c, }
第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。2 N+ n1 S! U# I! P" H& G2 w6 d& {9 G
以下为头文件概述(上)
$ w6 C& e4 ~0 h0 L一、assert.h& A8 @( w8 Q! I9 r1 I
1、void assert(int expression);# M {, J8 r7 F9 h
没有返回值,如果表达式为假则调用中断。
3 L# T& X* i! d% M# [二、ctype.h
( g2 m7 }7 c! Q8 k1、int isalnum(int c);- E- Q; l. @7 r+ J; a* b2 r
检查指定字符是否为数字或字母: L. u( M- M p0 Z% ?' b# h
2、int isalpha(int c);
+ s4 K4 X7 T& O检查指定字符是否为字母
4 S2 I2 I8 L+ v/ E1 M# \/ D! L3、int iscntrl(int c);
6 G% M o* y) i, R T检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。4 Z0 s* O5 N1 m
4、int isdigit(int c);. i+ [( Y7 d/ f: {' {9 i) M, e2 g# e
判断指定字符是否为数字& F, |/ X; p& v6 N* U
5、int isgraph(int c);
1 F) P' O% c. G/ O3 \! Y; b+ H判断指定字符是否为除空格" "以外的所有打印字符。3 E5 n# f' ]1 f+ f. [
6、int islower(int c);
' i) k! D3 h# o判断是否指定字符为小写字符
1 J, d5 z2 i4 g. k0 k) U, u7、int isprint(int c);' q: Z+ X7 L# i
判断是否指定字符是包括" "在内的所有可打印的字符
+ F3 H ^, _8 S# T( u+ ]/ o8、int isspace(int c);
; F2 O4 r6 |) t+ n" f7 Y* F判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
/ i! X: M2 G4 [% V% X! Z: V9、isupper(int c);# V6 T+ V, S: T
判断指定字符是否为大写字符。
& { P+ n! v+ K6 p" g10、int isxdigit(int c);' e3 w! H9 P$ T% S; B
可字定义区域设置,默认和isdigit一样。
1 [! {8 @2 {+ }8 W11、int tolower(int c);& I4 h8 q* N+ g# Q; _% e* z: E
将指定字符转换成小写字符。 f6 t0 Q9 n1 f- O/ Z! o
12、int toupper(int c);
# a0 o# w% V: ^6 ]6 `将指定字符转换成大写字符。3 z( z- q, N9 x7 f9 H( e$ [9 r
三、errno.h
4 r# T+ g& {- l4 x" Z* M5 V) I宏部分5 o; ~+ t% A8 e
四、float.h
5 K/ y3 N5 `3 G宏部分,测试上下溢+ U# K/ ~& f$ C6 e6 p# {
五、limits.h
) N; _, v5 q3 v6 e宏部分! I" }$ i7 M* s+ u4 u$ W! S
六、locale.h) M; `# f9 k1 t
两个函数、一种类型(struct lconv)、一些宏。
9 Q% O6 U. [0 k1 j' u* j1、char *setlocale(int category,const char* locale);3 Y, g% @/ T# [8 I0 x' L7 W
2、struct lconv *localeconv(void);
9 P5 p' x& T- @$ T- a七、math.h
9 ^; y7 Q' b5 j1 O4 x三角函数部分:9 `: h! L2 ~5 l! K3 t# I
1、double acos(double x);9 ?. u0 b, U5 _
计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。( I/ f, E: Y6 b! J
2、double asin(double x);+ u$ H: `! k& h; K; K! C ]. A
计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。" a4 N. m7 @; x' w) {0 @; V" f
3、double atan(double x);/ \' R; q' w4 ~) W+ |: d9 b r
计算x的三角反正切。返回值范围[-PI/2,PI/2]。/ q/ {, k5 L* r1 G
4、double atan2(double y,double x);; _( q: E" N, t m
计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
$ A& Q: M" P `3 @' t# g6 i5、double cos(double x);1 m7 s, \0 b1 b) s {, n7 k4 E8 `
计算x(以弧度为单位)的余弦值。
& Y; A7 m L0 n' A" H6、double sin(double x);
: [2 e& h! s' W计算x(以弧度为单位)的正弦值。
' o# W6 L2 d1 x+ `7、double tan(double x);
7 ]3 a; k) r$ o# V8 i返回x(以弧度为单位)的正切值。
' z% E& ~" ?" g8、double cosh(double x);
* C! W# s4 {. w3 E返回x的双曲正弦,若x的值过大,则返回错误。# x2 t; F* f, s& T! a& h% h: I
9、double sinh(double x);
7 [9 r2 t2 X: g7 u) _0 `计算x的双曲正弦,如果x的数值太大,则返回错误。
* F# s; }- O) a10、double tanh(double x);
" r7 F# x# s9 R( r; u/ e8 b计算x的双曲正切。
" Y% g2 n( m6 ~6 A# y5 d11、double exp(double x);
" G, _- F+ y8 K. W9 A/ D+ M# z计算x的指数函数。; P& G% G4 ]; [/ A
12、double frexp(double value,int *exp); p. B: ~$ Z: I C
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。
1 V* p6 S2 e) P. U5 c h13、double ldexp(double x,int exp);% g4 ^9 O9 e2 F% J) L, J5 _
计算x*2^exp的值并返回。8 E2 \( h3 S% z( n5 @; K6 H
14、double log(double x);
* `& R, p- ^9 Z; `7 O0 z计算x的自然对数,如果参数为负,则发生值域错误。' R" |# f/ U# i/ B
15、double log10(double x);( h/ N$ i2 q3 E, G( z
计算x的以10为底的对数。$ M8 m3 W( {* W- Q; a9 M
16、double modf(double value,double *iptr);5 U( u( D+ ^! r! }3 f
将value的整数部分传给iptr,将小数部分返回。7 G$ n; v3 C$ C. Q
幂函数部分:# V5 |6 f' C, \* W% w0 F$ N* d. a
1、double pow(double x,double y);3 }9 k% ^3 f$ r" l
函数计算x的y次幂,要防止值域错误。
5 b& V* P( r) ]& p2、double sqrt(double x);5 c& q$ B; T1 V: W+ c6 | O
函数计算x的非负平方根,如果参数为负,则发生错误。6 q, G' r. s' W& N) X* r
取整、绝对值、求模部分:
: a* Z* L8 w \; U- C9 e1、double ceil(double x);, q( n: @0 W* C7 N. r+ k
返回不小于x的最小整数。变大取整。
$ R4 D/ A$ I5 Q( K9 W' k2、double fabs(double x);3 z5 Y u4 N1 G0 f2 f6 u+ @, A
返回x的绝对值。1 l0 k& n% @6 N9 }& Y( Y0 m: ~
3、double floor(double x);
0 |+ f0 ~+ h1 _返回不大于x的最大整数。变小取整。% o4 p' Q* b% L' W* F% _& F
4、double fmod(double x,double y);& F1 t) d, b8 U6 I! t# _+ e
返回x/y的余数。
& Q) B# l; V4 p$ C" h0 j八、setjmp.h
8 K$ O5 g; H# \# I+ }定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);: s! ^4 ^$ I+ U: S! L2 R% |
用途饶过常规的函数调用和返回规则。
) g% z8 e' |/ B九、signal.h
! R. G" I) y, w2 o; j$ T同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
6 r, t# o1 Z k定义了一个类型sig_atomic_t,定义了两个函数和一些宏:
# }7 A+ r9 D6 S, E& \' l8 V& zvoid (*signal(int sig,void (*func) (int) )(int);6 l. c7 e) S( y9 I4 @
通过设置三种方式对信号进行处理。
' J' I; {9 w( d7 i, a: g+ Wint raise(int sig);
+ w$ u8 A/ Q$ G4 |* C把信号sig发送给正在执行的程序。成功返回0,否则非0。
6 _; x' F4 Q( M" v十、stdarg.h
8 F1 O! |! F$ f0 ?( u0 w5 [: v可变参数列表。定义了一个类型va_list。
/ w2 }9 ]/ e; \; I) y# I宏:
; ^/ y( n; i4 G) E3 r' w1、void va_start(va_list ap,paramN);
7 k' Y$ `2 b) @" W; B- I8 e对ap进行初始化。
7 U- c/ T3 O. d) k( F2、type va_arg(va_list ap,type);
5 L8 J, X! U0 D x* X3 g3、void va_end(va_list ap);
7 n! Y7 H- A2 D% v, n! _十一、stddef.h 被放到了stdlib.h
5 b I) m% g x1 o定义了一些类型:# j# v! M. m3 C% M: W
ptrdiff_t 两个指针相减的有符号整数类型$ X& Y% Q- s" W- @& }& M
size_t 用sizeof操作符的结果的无符号整数类型
: V. L; f. u+ F1 R( [) K, r" ^wchar_t 整值类型7 A( M: S* |$ v! z, |" s! x
宏:( `: b$ Z) i( [' D/ c+ b* E+ ~, h
NULL 展开为实现定义的空指针常量。
( ]5 U8 y( s6 Y' _offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。
! w8 f+ [& o6 X2 I0 h+ T _待续…… |
|