TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。7 R! }8 r( _4 {2 {" }/ b+ C% M
第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。9 a: y5 F1 \6 x' N1 J8 B3 _, `
以下为头文件概述(上)# {# V$ V5 b- o7 J
一、assert.h
8 d$ Q- a$ S1 R+ N( L& Y1、void assert(int expression);
* U) j8 L* n, G没有返回值,如果表达式为假则调用中断。
) ^/ H% N* {4 P1 K: S二、ctype.h
# y" z2 w8 w2 o" b. a9 C1、int isalnum(int c);& d' [# \, I: Z/ @: w
检查指定字符是否为数字或字母
6 a! B6 U+ _% V+ ?9 S. o/ R2、int isalpha(int c);
+ d5 ]6 C$ `% Y% {' a" \检查指定字符是否为字母, S5 l. Z: a9 q6 D9 J4 Z
3、int iscntrl(int c);# \3 j1 m! |2 P% B9 }
检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
1 J" t ^9 M/ k2 F; P5 o4、int isdigit(int c);
* Z+ B# k* F D- i/ n/ U判断指定字符是否为数字 ?8 |# p- P0 [ V* x
5、int isgraph(int c);
' c, _; D) F W判断指定字符是否为除空格" "以外的所有打印字符。- I/ M3 Z$ }; D: ^0 o( l4 d4 a }
6、int islower(int c);% r9 N) ^7 H* B Z* `+ J/ I
判断是否指定字符为小写字符$ N0 K' o* i0 B! } r
7、int isprint(int c);
5 m2 e4 D7 R# j: k判断是否指定字符是包括" "在内的所有可打印的字符
- E* X" S7 U- r( d8、int isspace(int c);
+ D9 E: z. p, ~* A, U3 A& _判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
% J% P7 m9 \5 o! F4 r5 n. H/ B9、isupper(int c);
4 M$ B4 u/ @( ]& m* |判断指定字符是否为大写字符。# O5 ?$ n8 @; z+ E7 W! c
10、int isxdigit(int c);+ W3 B5 s+ F! I2 p9 S3 q
可字定义区域设置,默认和isdigit一样。
! r4 d1 x( J) S& v U11、int tolower(int c);& c8 f4 Q) U% @( Q; G- X u
将指定字符转换成小写字符。# f6 Q: O7 z7 Z% [" U
12、int toupper(int c);
5 |+ \2 s6 g |# G6 `: f将指定字符转换成大写字符。4 n4 s/ h% ~8 s5 }
三、errno.h: f' k+ e9 e$ I
宏部分
8 D; w- k y+ Z. ^- F- l四、float.h- U* ~. X. m9 e" T3 t
宏部分,测试上下溢' C+ \0 C5 O. l' z* l
五、limits.h
6 z0 A$ y, ]/ k5 ?' r# A, B# u宏部分
! d2 Z1 S6 b0 ~( m0 P F六、locale.h
8 P) N$ Z: U* h8 T/ \- }' q: c两个函数、一种类型(struct lconv)、一些宏。; v$ Z3 L* b$ q$ e
1、char *setlocale(int category,const char* locale);# I0 ?3 q: a+ c
2、struct lconv *localeconv(void);
' p" b J, ]' T七、math.h
) e5 _. E% o7 s1 i P# F5 P4 A三角函数部分:( b! M5 c( |2 d
1、double acos(double x);4 `% O8 s& ]( W: l+ ~( Z# s8 H
计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。
# |/ Z R5 Y) C% {( Q2、double asin(double x);
! @. j9 }: W$ {( x计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。 |8 \ m4 q$ ]1 ^& Y4 L# l
3、double atan(double x);
! I! q! r6 i$ X) S4 x计算x的三角反正切。返回值范围[-PI/2,PI/2]。/ u, z/ J5 I+ ^- [) C8 e
4、double atan2(double y,double x);
# ]) }( _6 H$ o) Q3 D计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。0 S, y: Y/ P( D
5、double cos(double x);8 I c7 ]7 u6 f8 V. T4 D) V
计算x(以弧度为单位)的余弦值。
7 d0 f: \; g0 x8 @, K1 T6、double sin(double x);
" n3 s, T( R% G1 T0 T4 l* X2 y) E计算x(以弧度为单位)的正弦值。, p, G) u2 @- \4 L2 R1 T! ?
7、double tan(double x);) e2 x/ i) M( N/ |
返回x(以弧度为单位)的正切值。9 T$ v2 w7 K s! V8 X
8、double cosh(double x);
. _) L( a& k! @9 A返回x的双曲正弦,若x的值过大,则返回错误。
: Z( g K7 R0 V3 P7 S9、double sinh(double x);
! {6 K) n& C3 s+ R9 g计算x的双曲正弦,如果x的数值太大,则返回错误。
$ s! W; b8 t0 F) W10、double tanh(double x);
" u1 t* J, c) F/ V- y计算x的双曲正切。8 U6 S' \& E4 E4 v5 ], ^' l+ o; h
11、double exp(double x);
$ C: _: ~4 b& B计算x的指数函数。0 d# g0 w. W# a0 I
12、double frexp(double value,int *exp);3 ?3 X' j" {- W) B" z: `
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。9 M7 }4 {& h& O1 ?- E: y) u
13、double ldexp(double x,int exp);
3 a0 x7 o: F- V; n3 u6 k计算x*2^exp的值并返回。1 ?* h" ^ D3 p# O$ F
14、double log(double x);. L& _# \' A# W' V8 r6 u
计算x的自然对数,如果参数为负,则发生值域错误。
) B, t/ d" r; p: ~15、double log10(double x);1 _2 u# ]4 y7 F2 E3 B
计算x的以10为底的对数。/ @: }8 m' X* |. H+ z; c& X9 k
16、double modf(double value,double *iptr);
# }8 Q# O' B( b+ L) ?将value的整数部分传给iptr,将小数部分返回。! M0 U- B" R$ v5 p7 p
幂函数部分:0 g0 y9 J7 R* N/ K6 D2 z" v! D
1、double pow(double x,double y);' D ]3 X; n# B$ }
函数计算x的y次幂,要防止值域错误。& ^) S( }4 c- J' {. p( r
2、double sqrt(double x);) ^' ]" c" \. t) m' q! K! _" z
函数计算x的非负平方根,如果参数为负,则发生错误。" I2 j0 l3 Z' q3 H! s: _
取整、绝对值、求模部分:6 r# a, L& z0 D+ y$ p- N3 j
1、double ceil(double x);
0 u8 d- ]4 ?1 `2 r返回不小于x的最小整数。变大取整。
5 {1 W5 Z; Z ?5 [4 l0 w1 n2、double fabs(double x);
% T( e% A4 T! [& U返回x的绝对值。6 Q! W( A: m& \* F) d8 m5 O: s
3、double floor(double x);$ A$ ~# G M: t8 E- M6 }
返回不大于x的最大整数。变小取整。
3 G# \: d. B- {4、double fmod(double x,double y);
7 B( t6 f7 W. J+ I+ ]; b返回x/y的余数。% R7 u* p% m6 L2 m8 P/ n
八、setjmp.h
3 w; d/ r3 M) C! n% t: c" L4 E定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
6 A/ K% r+ }& a! B5 {. v. o0 T用途饶过常规的函数调用和返回规则。
0 N4 [; o5 X/ U# ?8 z% ?/ `九、signal.h
; R* P0 U1 ~$ l# g& Z1 F, o同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。
# e2 z. p$ T# @7 u定义了一个类型sig_atomic_t,定义了两个函数和一些宏:) o. I) e f* o8 x4 p3 y
void (*signal(int sig,void (*func) (int) )(int);
2 {+ L) |' T! p w2 i5 ~通过设置三种方式对信号进行处理。
7 Y7 s0 Z. u, f" C, N$ V2 {int raise(int sig);
i; E% s8 A! ^' o v5 W5 \把信号sig发送给正在执行的程序。成功返回0,否则非0。0 v# E( n3 \% C5 b
十、stdarg.h
4 r5 ~ A7 [0 [6 F3 Y T9 _6 \可变参数列表。定义了一个类型va_list。# S4 t# ? i- J) D# J9 v
宏:5 p$ C: h% @7 i! }
1、void va_start(va_list ap,paramN);
r7 }- B7 a* q) ^% e对ap进行初始化。, H- ]& V8 z$ y9 c8 n
2、type va_arg(va_list ap,type);
, n4 y5 m3 g) ~# V3、void va_end(va_list ap);) j1 f# W2 @( r2 L0 J' i
十一、stddef.h 被放到了stdlib.h5 Y# P. c# ]2 D. _* v5 @
定义了一些类型:
' X; U0 @0 L, hptrdiff_t 两个指针相减的有符号整数类型1 {% F6 I. X0 x; h4 [( E3 l/ }1 P
size_t 用sizeof操作符的结果的无符号整数类型% l8 ^' \- _! |# d/ ?
wchar_t 整值类型
3 j# U! Q3 `& g宏:
& ]7 M; D0 d i7 @5 w' e& YNULL 展开为实现定义的空指针常量。
+ i+ j( p6 p7 o( f x; b7 o0 Poffsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。 E1 @3 ~# t' q1 p/ x
待续…… |
|