《C Primer Plus》阅读笔记(1)

该系列笔记摘自《C Primer Plus》,香港服务器,人民邮电出版社,2005.2。

第1-3章阅读笔记1、贝尔实验室的Dennis Ritchie在1972年开发了C。C来自Ken Thompson的B语言。这两位大师一起设计了UNIX操作系统。2、C++向C语言嫁接了面向对象编程工具(面向对象编程是一种哲学思想,它试图让语言来适应问题,而不是让问题来适应语言)。3、编译和链接:  编译器将源代码转换为目标代码文件,链接器将目标代码、系统的标准启动代码和库代码结合在一起生成可执行文件。  启动代码(start-up code)相当于程序与操作系统之间的接口,不同的操作系统使用不同的启动代码。  目标文件和可执行文件都是由机器语言指令组成的,但目标文件只包含您所编写的代码转换成的机器语言,而可执行代码还包含您所使用的库例程以及启动代码的机器代码。4、#include <stdio.h>   该语句的作用相当于在文件中该行所在的位置键入了文件stdio.h的完整内容,实际上它是一种剪切和粘贴操作。5、C语言的一个基本设计原则是避免不必要的成分。这个经济地使用资源的原则使得C语言在嵌入式编程中非常流行。6、int main(void)   一个C程序总是从main()函数开始执行。int指明main()函数的返回类型是整数。返回到哪里呢?返回给操作系统。7、C99标准允许一个标识符最多可以有63个字符,C90允许最多为31个字符。C语言的名字区分大小写。8、提高程序可读性的几个技巧:  1. 选择有意义的变量名;  2. 使用注释;  3. 使用空行分隔一个函数的概念上的多个部分,如用空行分隔定义部分和动作部分;  4. 每行一个语句。9、C的惯例是把main()函数放在文件开头,因为它通常为程序提供了最基本的框架。此外,C标准建议为要用的所有函数提供函数原型。10、编译器的常见“错误”:  1.一个真正的语法错误可能导致编译器误认为它发现了其他错误。因此不用立刻改正所有发现的错误,而是修改前一个或前两个;  2.发现错误的位置比真正的错误要滞后一行。例如如果编译器指出某个具有分号的行少了一个分号,那么请检查上一行。11、C语言关键字  ISO/ANSI C90标准包含34个关键字,C99标准在C90基础上新增了3个关键字。12、变量与常量:  常量:数据可以在程序使用之前预先设定并在整个运行过程中没有变化;  变量:数据在程序运行过程中可能变化或被赋值。  变量与常量的区别在于变量的值可以在程序执行过程中变化与指定,香港虚拟主机,而常量则不可以。13、整数和浮点数在计算机中的存储方式不同。浮点数表示法将一个数分为小数部分和指数部分并分别存储。  C的各种整数类型的区别在于所提供数值的范围,以及数值是否可以取负值。14、在使用printf()函数时,格式说明符的数目和要显示的参数值的数目一定要相同。大多数函数有确切的参数数目,编译器可以检查数目是否正确。然而,printf()函数可以有1个、2个、3个或更多的参数,这使得编译器无法使用常规的方法检查错误。15、C语言仅保证short类型不会比int类型长,并且long类型不会比int类型短,这样做是为了适应不同的机器。16、在int为32位的系统上,如果需要16位的值,那么使用short类型可以节省存储空间。通常,只有当程序使用了使系统可用内存很紧张的较大的整数数组时,节省存储空间才是重要的。使用short类型的另一个原因是计算机中的一些硬件寄存器是16位的。17、C语言整数值达到最大值后如果继续加1,将会溢出到起始点。无符号类型变量的起始点是0,但C标准没有定义有符号类型的溢出规则,通常有符号类型整数的起始点是最小的负数值(其绝对值最大)。18、请注意,尽管在C中常量后缀可以使用大写或小写字母,如L或l(小写的L)表示long类型,但格式说明符只能使用小写字母。19、 关于printf()函数:   在使用printf()语句时,切记每个要显示的值都必须对应自己的格式说明符,并且显示值的类型要同说明符相匹配。如果使用了不正确的说明符,会造成意想不到的后果。  printf()说明符决定数据的显示方式而不是决定数据的存储方式。  特别注意,使用%d显示float值不会把该float值转换为近似的int值,而是显示垃圾值。与之类似,使用%f显示int值也不会把该int值转换为浮动值。  printf()函数什么时候真正把输出传送给屏幕?首先,printf()语句将输出传递给一个被称为缓冲区(buffer)的中介存储区域。缓冲区中的内容再不断地被传递给屏幕。标准C规定在以下几种情况下将缓冲区内容传给屏幕:缓冲区满的时候、遇到换行符的时候以及需要输入的时候。20、int类型被认为是计算机处理起来最方便有效的整数类型,所以在short类型和int类型长度不同的系统中,使用int类型值进行参数传递的速度更快。21、char类型实际存储的是整数而不是字符。标准ASCII码值的范围从0到127,只需要7位即可表示,而char类型通常定义为使用8位内存单元(即8 bits)。22、C把一个字节(byte)定义为char类型使用的位(bit)数。23、C将字符常量视为int类型而非char类型。例如,在int类型为32位和char类型为8位的ASCII系统中,下列代码:char grade = ‘B’;意味着’B’作为数值66存储在一个32位单元中,而赋值后的grade则把66存储在一个8位单元中。24、常用转义序列:  \n : 换行(将活动位置(如光标)移到下一行的开始处)  \r : 回车(将活动位置(如光标)移到当前行的开始处)  \\ : 反斜杠(\)  \xhh :十六进制值(h表示一个十六进制数字)  在给一个字符变量赋值时,转义序列必须用单引号括起来。然而,无论普通字符还是转义序列,如果作为双引号中字符集合的一部分,则无需单引号。25、根据C90标准,C允许在关键字char前使用signed和unsigned。这样,无论默认的char是有符号类型还是无符号类型,signed char是有符号类型,而unsigned char则是无符号类型。这对于使用字符类型处理小整数十分有用。如果处理字符,则只须使用不带修饰词的标准char类型。26、C标准规定,float类型必须至少能表示6位有效数字,取值范围至少为10-37到1037。double类型和float类型具有相同的最小取值范围要求,但它必须至少能表示10位有效数字。通常double类型至少具有13位有效数字,超出了C的最小标准规定。27、默认情况下,编译器将浮点数常量当作double类型。可以通过f或F后缀使编译器把浮点常量当作float类型,或者使用L后缀使一个浮点数成为long double类型,没有后缀的浮点常量为double类型。28、当为某个数值类型的变量进行初始化时,如果使用了其他类型的值,C会自动对该值进行类型转换以便和变量类型相匹配,美国服务器,这意味着可能会丢失一部分数据。29、用双引号引起来的一串字符称为字符串。不论包含多少字符和标点符号,一个字符串只是一个参数。

可你仍然感谢天地和人世所带来的这些变化和发生。

《C Primer Plus》阅读笔记(1)

相关文章:

你感兴趣的文章:

标签云: