- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C程序设计语言第2版(BrianWKernighanDennisMRitchie)阅读笔记
C程序设计语言 第2版(Brian W.Kernighan Dennis M.Ritchie) 阅读笔记 2011-12-05 by dadoneo (/dadoneo) 第1章 导言 一般来说,main()函数返回值为0表示正常终止,非0表示出现异常情况或出现结束条件。Main本身也是函数,其调用者实际上就是程序的执行环境。程序要身其妊环境返回状态。 外部变量必须定义在所有函数之外,且只能定义一次,定义后编译程序将为它分配存储单元。 (1)在一个源文件中,如果外部变量的定义出现在使用它的函数之前,那么那个函数中就没有必要使用extern声明; (2)在多个源文件中,变量在file1中定义,在file2与file3中使用,那么在文件file2与file3中就需要使用extern声明该变量与其定义之间的关系。 通常把变量和函数的extern声明放在一个单独的文件中(习惯上称之为头文件),并在每个源文件的开头使用#include把所要用的头文件包含进来。 “定义”表示创建变量或分配存储单元,而“声明”指的是说明变量的性质,但不分配存储单元。 第2章 类型、运算符与表达式 常量表达式是仅仅只包含常量的表达式。这种表达式在编译时求值,而不在运行时求值;它可以出现在常量可以出现的任何位置。 默认情况下,外部变量与静态变量将被初始化为0,未经显式初始化的自动变量的值为未定义值(无效值); 逻辑非运算符(!)的作用是将非0操作数转换为0,将操作数0转换为1; 在if, while, for等语句的测试部分中,“真”就意味着“非0”。如-1,也表示为真。 表达式中float类型的操作数不会自动转换为double类型。 使用float类型主要是为了在使用较大的数组时节省存储空间,有时也为了节省机器执行时间(双精度算术运算特别费时)。 当表达式中包含unsigned 类型的操作数时,转换规则要复杂一些。主要原因在于,带符号值与无符号值之间的比较运算是与机器相关的,因为它们取决于机器中不同整数类型的大小。例如,假定int类型占16位,long类型占32位,那么,-1L1U,这是因为unsigned int 类型的1U被提升为signed long类型;但-1L1UL,这是因为-1L将被提升为unsigned long类型从而变成一个比较大的数。 自增与自减运算符只能作用于变量,类似于(i+j)++是非法的。 在不需要使用任何具体值且仅需要递增变量的情况下,前缀方式和后缀方式的效果相同。 C语言提供了6个位操作运算符。这些运算符只能作用于整形操作数,即只能作用于带符号或无符号的char, short, int, long类型: | ^(异或) ~(按位求反) 第4章 函数与程序结构 如果函数定义中省略了返回值的类型,则默认为int类型; 外部变量或函数的作用域是从声明它的地方开始,到其所在的(待编译的)文件的末尾结束。如果要在外部变量的定义之前使用该变量,或者外部变量的定义与变量的使用不在同一个源文件中,则必须在相应的变量声明中强制性地使用关键字extern。 将外部变量的声明与定义严格区分开来很重要。变量声明用于说明变量的属性(主要是变量的类型),而变量定义除此以外还将引起存储器的分配。 外部变量的定义中必须指定数组的长度,但extern声明则不一定要指定数组的长度。外部变量的初始化只能出现在其定义中。 用static声明限定外部变量与函数,可以将其后声明的作用域限定为被编译源文件的剩余部分。通过static限定外部对象,可以达到隐藏外部对象的目的。 Static类型的内部变量是一种只能在某个特定函数中使用但一直占据存储空间的变量。 Register声明只适用于自动变量以及函数的形式参数。它告诉编译器,它所声明的变量在程序中使用频率较高。其思想是,将register变量放在机器的寄存器中,这样可以使程序更小,执行速度更快。但编译器可以忽略此选项。 每次进入程序块时,在程序块内声明以及初始化的自动变量都将被初始化。静态变量只在第一次进入程序块时被初始化一次。 在不进行显式初始化的情况下,外部变量和静态变量都将被初始化为0,而自动变量和寄存器变量的初值则没有定义(即初值为无用的信息)。 对于外部变量与静态变量来说,初始化表达式必须是常量表达式,且只初始化一次(从概念上讲是在程序开始执行前进行初始化)。对于自动变量与寄存器变量,则在每次进入函数或程序块时都将被初始化。 对于自动变量与寄存器变量来说,初始化表达式可以不是常量表达式:表达式中可以包含任意在此表达式之前已经定义的值,包括函数调用。 当省略数组的长度时,编译器将把花括号中初始化表达式的个数作为数组的长度。 字符数组的初始化char
文档评论(0)