欢迎来到天天文库
浏览记录
ID:26546263
大小:83.50 KB
页数:9页
时间:2018-11-27
《c 程序设计语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C程序设计语言》读书笔记C程序设计语言LiXiaojun2009/4/22TitleC程序设计语言AuthorBrianW.KernighanDennisM.RitchieTranslator影印版PublishingHouse机械工业出版社ISBN7-111-19626-0BriefIntroduction8《C程序设计语言》读书笔记目录第四章函数与程序结构2初始化2预处理器2第五章指针与数组2第六章结构3第八章UNIX系统接口3read和write3opencreateclose和unlink3随机访问lseek3
2、附录标准库3简介3IO函数库:3错误处理函数:5字符类别测试:5字符串函数:6数学函数:6实用函数:6诊断:7可变参数列表:7非局部跳转:8信号:8日期和时间函数:8与具体实现相关的:和88《C程序设计语言》读书笔记第四章函数与程序结构初始化寄存器变量的地址是不可访问的。在不进行显
3、式初始化的情况下,外部变量和静态变量都会被初始化为0,而自动变量和寄存器变量的初值则没有定义。对于外部变量和静态变量来说,初始化表达式必须是常量表达式,并且只初始化一次(从概念上讲,是在程序开始执行前初始化),对于自动变量和寄存器变量来说,初始化表达式可以不是常量表达式,表达式中可以包含任意在此之前已经定义的值,包含函数调用。数组的初始化可以在声明的后面紧跟一个初始化表达式列表,初始化表达式列表用花括号括起来,各初始化表达式之间通过逗号分隔。如果初始化表达式的个数比数组元素数少,则对外部变量、静态变量和自动变量来说,没有
4、初始化表达式的元素将被初始化为0。预处理器#和##的使用·在宏定义中参数名以#作为前缀则将实际扩展时将被扩展为以双引号引用的实参的形式。如果实参中出现了双引号,则自动被替换为”,如果实参中出现了反斜杠,则自动会被替换为\(经测试,GCC不会替换为\,VC也不会)。比如:#definedprint(expr)printf(#expr“=%g”,expr)dprint(x/y);将被扩展为:printf(“x/y”“=%g”,x/y);·预处理器运算符##为宏扩展提供了一种连接实际参数的手段,如果替换文本中
5、的参数与##相邻,则该参数将被实际参数替换,##与前后的空白符将被删除,并对替换后的结构节性扫描。例如:#definepaste(front,back)front##back则宏调用paste(name,1)将被替换为:name1第五章指针与数组在函数定义中,形参chars[]和char*s等价。p[-1],p[-2]这样的表达式在语法上是合法的。ANSI规定argv[0]的值是启动该程序的程序名,argv[argc]==NULL8《C程序设计语言》读书笔记第六章结构第八章UNIX系统接口read和writeopencr
6、eateclose和unlink随机访问lseek附录标准库简介IO函数库:文件操作:读写交替中要记得fflush();FILE*fopen(constchar*filename,constchar*mode);模式mode
7、:r,w,a,r+(openforupdate,read&write),w+,a+;限定b(binary)filename最多FILENAME_MAX各字符,一次最多打开FOPEN_MAX个文件。FILE*freopen(constchar*filename,constchar*mode,FILE*stream);一般用于重定向标准IO。intfflush(FILE*stream);fflush(NULL)会刷新所有的流。intfclose(FILE*stream);出错返回EOF,否则返回0。会刷新(w)或丢弃(r)缓
8、冲区数据并释放缓冲区。intremove(constchar*filename);return0ifsuccess8《C程序设计语言》读书笔记intrename(constchar*oldname,constchar*newname);return0ifsuccess.FILE*tmpfile(void);以wb+创
此文档下载收益归作者所有