TA的每日心情 | 慵懒 2016-4-21 12:07 |
|---|
签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 累计签到:3 天 连续签到:1 天
|
|
马上加入,结交更多好友,共享更多资料,让你轻松玩转电力研学社区!
您需要 登录 才可以下载或查看,没有账号?立即加入
×
暑假的时候买了《C标准库》一书,但因为当时在新东方学GRE,一直没有仔细钻研。新学期开始又因为学SL而无暇顾及,只是平时隔三岔五的看了看。最近,C语言在排行榜上又位居榜首,可见其在编程界中的重要性。于是,决定花出点时间,把以前看过的整理一下,特此作出学习笔记,一是方便自己和观者以后复习,二是见证自己的点滴进步。
- E4 Y3 n% m$ F第一部分是整理自己暑假时看的内容,概括的列出头文件及其包含的成员。第二部分是着重讲几个常用的头文件及其内部实现。第三部分是通过几个小实例来测试所学。( ~& m2 i# I; E2 @9 e2 w
以下为头文件概述(上)
Y( \" e! N- d# f3 k2 d& e一、assert.h: Q7 t. @8 S+ ^( d( k! F
1、void assert(int expression);
! M: C! d" M a& J没有返回值,如果表达式为假则调用中断。0 l k2 c, F1 f/ D1 J( b& b
二、ctype.h& ?7 Z9 V7 R k+ `$ X# K
1、int isalnum(int c);; {. |" _ c- ~/ P3 b/ h) ~
检查指定字符是否为数字或字母
+ f* m0 Q o. ~/ p' y, J2、int isalpha(int c);
' i* p+ N1 x$ `/ o1 a; k( W& x* s/ }9 K& |- b检查指定字符是否为字母* ~3 a1 n5 x7 ?4 E8 w- g
3、int iscntrl(int c);
4 p' d" X: \) f! K检查指定字符是否为:换页符、换行符、回车符、水平制表符、垂直制表符、退格符、警报符。
! a: t9 w$ g! @; z7 t2 G4、int isdigit(int c);
7 I( W+ S4 l9 h判断指定字符是否为数字+ _# ^8 B% h( B
5、int isgraph(int c);3 V# m# `) ~+ p3 d4 I* ~- b
判断指定字符是否为除空格" "以外的所有打印字符。7 A$ K9 g$ w% X
6、int islower(int c);
( c- v. k7 `7 t- ]* c. f" i$ y判断是否指定字符为小写字符
; q" b- `, O) K& |# r @4 E7、int isprint(int c);
) b. U7 k3 K8 s, F判断是否指定字符是包括" "在内的所有可打印的字符
$ O5 g) F9 Q8 z6 G8、int isspace(int c);1 w5 i# r! }' K1 O- w0 r# M* }0 Y% r0 @
判断指定字符是否为换页符、换行符、回车符、水平制表符、垂直制表符、空格。
# q! \' P- P5 ] u) a0 x F9、isupper(int c);
O% K+ C6 u' o! Q' M判断指定字符是否为大写字符。9 x8 O+ s, c5 Z' k8 E
10、int isxdigit(int c);
; A0 C$ X9 X u可字定义区域设置,默认和isdigit一样。
2 a v! @' K1 _* _6 \1 x11、int tolower(int c);
4 K" H$ B1 y1 `* `将指定字符转换成小写字符。
; A6 v) `$ U( Z. K12、int toupper(int c);
5 O/ ^7 N" d, p# b. p将指定字符转换成大写字符。3 m& d& S: N3 s/ x
三、errno.h* d% B }. f I+ j& {
宏部分
2 X2 P; W" d) E: Y四、float.h
' {* w" {. i0 m宏部分,测试上下溢
$ k9 c L5 }+ G: J: n$ [8 C五、limits.h
* m1 o1 x$ C" g) H6 f' }' Y宏部分- t! m% v1 _- J R" h5 S" ~- J# I
六、locale.h) @0 l( K f; L1 Q/ h& s7 U
两个函数、一种类型(struct lconv)、一些宏。
: [0 K# w: F* I8 \1、char *setlocale(int category,const char* locale);
; B8 ~6 b# M6 V2、struct lconv *localeconv(void);
& N3 h7 y; J7 E2 M0 i- `9 z七、math.h2 s6 E2 ?- u+ z w* V4 @
三角函数部分:4 I, u5 H2 `/ V
1、double acos(double x);
+ P8 |; u( e; [* u计算x的三角反余弦,如果x不在[-1,+1]中,则引发错误。返回值范围[0,PI]。3 A' X) P+ {( Q% T k% v
2、double asin(double x);! `/ p2 p: j0 X7 |) C5 Q: G
计算x的三角反正弦,如果x不在[-1,+1]中,则引发错误。返回值范围[-PI/2,PI/2]。
6 N- u9 k3 \ {: Z' F3、double atan(double x);
% V' i0 T1 d; V1 g( g计算x的三角反正切。返回值范围[-PI/2,PI/2]。; n2 v1 k6 r. ^( k1 u m+ O. s- l
4、double atan2(double y,double x);
2 E% b- [( C i8 H计算y/x的三角反正切函数主值,如果两个参数都为0,则返回错误。返回值范围[-PI,PI]。
0 e9 C2 b! `" r1 X- w) V5、double cos(double x);( g a- ~6 q/ _+ _) M
计算x(以弧度为单位)的余弦值。
4 W2 P) R" `) ?8 V8 x4 e6、double sin(double x);6 ^: o! F ^# @6 r0 l/ L
计算x(以弧度为单位)的正弦值。
& s2 c- S7 s9 K: c1 q$ F: d4 A7、double tan(double x);5 g! {. j. m$ L" F. \2 G
返回x(以弧度为单位)的正切值。
: P8 M# i( h9 u; C, e0 B" \8 t8、double cosh(double x);
0 I& r! G& y% W0 K) `8 @返回x的双曲正弦,若x的值过大,则返回错误。
7 p7 ?8 s3 e6 f3 o9、double sinh(double x);
# R+ q6 B% i9 s5 J: ]# g计算x的双曲正弦,如果x的数值太大,则返回错误。( ~% e) Y8 P D8 D9 X; H8 p
10、double tanh(double x);& I0 a" }8 q3 s7 l
计算x的双曲正切。/ R- q4 n8 Y: N
11、double exp(double x);
2 U8 n/ I6 Y$ D" d( W0 t$ @8 d& ?计算x的指数函数。
0 e" [ [- G4 P, m( v2 t12、double frexp(double value,int *exp);% t. w$ m5 A+ E# ?, r9 a
把一个浮点数分为一个小数和一个2的正数幂(两者乘积),整数部分存在exp中,返回小数部分。. S8 x7 A L* j. \
13、double ldexp(double x,int exp);
# s2 d1 a- U, C$ t+ q计算x*2^exp的值并返回。$ w2 @2 B& C, e# z
14、double log(double x);
' \7 c, f7 x6 s5 D计算x的自然对数,如果参数为负,则发生值域错误。
1 \5 X B& H, `- U15、double log10(double x);) N9 [2 \8 N; c8 f
计算x的以10为底的对数。
; ?! \/ f, w: J i16、double modf(double value,double *iptr);
. @$ Q& s! t! w. T. A将value的整数部分传给iptr,将小数部分返回。) E+ K9 x K! e
幂函数部分:
. K; U+ \3 ^+ O2 c* z. r1、double pow(double x,double y);
; S; P D6 O: a6 D函数计算x的y次幂,要防止值域错误。
" c& \+ g5 k6 e1 F2、double sqrt(double x);1 Z* g' K* F$ B+ g
函数计算x的非负平方根,如果参数为负,则发生错误。
% ]8 x- A) c- Z- c- u取整、绝对值、求模部分:. X, f* K0 D1 e5 J
1、double ceil(double x);2 l& w+ [3 Y% D! v0 ^- W
返回不小于x的最小整数。变大取整。
3 @9 F2 n- H6 E2、double fabs(double x);
5 `2 ~; S3 }2 d( C- W; E返回x的绝对值。- j: ^1 H3 W9 f0 v+ \2 B
3、double floor(double x);
, `: z8 W7 M2 a3 u/ d1 e' {6 v返回不大于x的最大整数。变小取整。
/ N, a( ?/ t3 C: h# G0 Z$ T4、double fmod(double x,double y);
+ O: m8 [4 m' X) f! `返回x/y的余数。
' k6 a8 _% S* J# f八、setjmp.h
$ Y7 u/ M: R1 N) b" C6 E. J2 [定义了一个类型jmp_buf,保存调用环境的宏int setjmp(jmp_buf env);,恢复调用环境函数void longjmp(jmp_buf env,int val);
" g3 l G( l5 f" H- w3 W用途饶过常规的函数调用和返回规则。
9 B, D" T4 t" c% n九、signal.h Z( H) m; D+ U( p& v/ O9 y" E
同步信号(一般为程序异常)和异步信号的处理(外部行为传递的信号)。$ ?7 x' {- l* _6 e* d3 h+ Y
定义了一个类型sig_atomic_t,定义了两个函数和一些宏:! h5 f4 _, E6 K8 R- z
void (*signal(int sig,void (*func) (int) )(int);
* U$ ~& X3 \+ d2 W# J% ~通过设置三种方式对信号进行处理。
+ n7 o. S0 w; N. u4 c* Hint raise(int sig);& P# l6 A5 F3 f1 ^1 ?
把信号sig发送给正在执行的程序。成功返回0,否则非0。4 d) V; B X- r. l: @
十、stdarg.h% k; f: h7 F" S0 g# ~ x) n
可变参数列表。定义了一个类型va_list。
. a; H% L% |" ]9 ~( D; A2 q1 ]5 y宏:" m, d8 a4 q" e! x) D2 Q' k- Q
1、void va_start(va_list ap,paramN);
& A$ b/ F6 q; q* F- J6 m" [7 |对ap进行初始化。/ c+ w! W. V1 {5 D
2、type va_arg(va_list ap,type);: i8 q% S0 t7 t
3、void va_end(va_list ap);
; `" [" o! L: r4 t+ m十一、stddef.h 被放到了stdlib.h! A& k. q2 ]. U5 k
定义了一些类型:
- Q- K* T8 j# p6 z) Dptrdiff_t 两个指针相减的有符号整数类型
9 [, M: V0 z' b* q" }+ S6 W% Msize_t 用sizeof操作符的结果的无符号整数类型, Y3 ~7 j7 T6 \4 G& U4 C7 \3 L# R ?
wchar_t 整值类型
: Y- Q# B% c* j E# a宏:) h7 I+ `. P8 B& a8 V- {
NULL 展开为实现定义的空指针常量。0 b y- X) L! Z& ~" G( q3 Q
offsetof(type,member_designator) 展开为一个size_t type指定结构起始位置,member_designator指定便宜量。0 D2 u0 \& G+ U2 ?8 K6 _
待续…… |
|