上一页 1 ··· 8 9 10 11 12 13 下一页
  2012年5月1日
摘要: 第六章一、知识点1、getchar和putchar经常被实现为宏,以避免在每次执行输入或者输出一个字符这样简单的操作时,都要调用相应的函数而造成系统效率的下降。(P100)2、宏只是对程序的文本起作用,宏提供了一种对组成C程序的字符进行变换的方式,而并不作用于程序中的对象。(P101)3、对于宏定义:(P101)#define f (x) ((x) - 1)f(x) 代表的是(x) ((x) - 1)。这是因为 f 和后面的(x)之间多了一个空格,如果希望定义f(x) 为 ((x) - 1),必须这样写:#define f(x) ((x) - 1)这一规则不适用于宏调用,而只对宏定义适用。因此 阅读全文
posted @ 2012-05-01 09:24 谷堆旁边 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 第五章一、知识点1、对于一个例子:#include <stdio.h>main(){ char c; while((c = getchar()) !=EOF) putchar(c);}getchar函数在一般情况下返回的是标准输入文件中的下一个字符,当没有输入时返回EOF。这依程序乍一看似乎是把标准输入复制到标准输,实则不然。原因在于程序中的变量c被声明为char型,而不是int类型。这意味着c无法容下所有可能的字符,特别是,可能无法容下EOF。(P92)2、更新顺序文件:(P93)3、C语言实现通常都允许程序员进行实际的写操作之前控制产生的输出数量。这种控制能力一般通过库函数se 阅读全文
posted @ 2012-05-01 09:23 谷堆旁边 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 第四章一、知识点1、典型的连接器把由编译器或汇编器生成的若干个目标模块,整合成一个被称为载入模块或可执行文件的实体,该实体能够被操作系统直接执行。(P74)2、连接器通常把目标模块看成是由一组外部对象组成的。每个外部对象代表着机器内存中的某个部分,并通过一个外部名称来识别。因此,程序中的每个函数和每个外部变量,如果没有被声明为static,就都是一个外部对象。除了外部对象之外,目标模块还可能包括了对其他模块中的外部对象的引用。当连接器生成载入模块的过程中,它必须同时记录这些外部对象的引用。当连接器读入一个目标模块时,它必须解析出这个目标模块中定义的所有外部对象的引用,并作出标记说明这些外部对象 阅读全文
posted @ 2012-05-01 09:19 谷堆旁边 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 第三章一、知识点1、C语言中的数组值得注意的地方有以下两点:(P41)(1)、C语言中只有一维数组,而且数组的大小必须在编译期就作为一个常数确定下来。然而,C语言中数组的元素可以是任何类型的对象,当然也可以是另外打的一个数组。(2)、对于一个数组,我们只能够做两件事:确定该数组的大小,以及获得指向该数组下标为0的元素的指针。其他有关数组的操作,哪怕它们乍看上去十一数组下标进行运算的,实际上都是通过指针进行的。换句话说,任何一个数组下标运算都等同于一个对应的指针运算,因此我们完全可以依据指针行为定义数组下标的行为。2、对于int calendar[12][31]; 这个语句生命了calendar 阅读全文
posted @ 2012-05-01 09:19 谷堆旁边 阅读(345) 评论(0) 推荐(1) 编辑
摘要: 第二章一、知识点1、函数运算符()的优先级高于单目运算符*。(P26)2、我们一旦知道了如何声明一个变量,也就自然知道如何对一个常数进行类型转换,将其转型为该变量的类型:只要在变量声明中将变量名去掉即可。(P27)例如:fp是一个指向返回值为void类型的函数的指针,那么(*fp)()的值为void,fp的声明为:void (*fp)();将常数0转型为“指向返回值为void的函数的指针”类型,可以这样写:(void (*)()) 03、关于操作符优先级:(P30)(1)、优先级最高者并不是真正意义上的运算符,包括:数组下标、函数调用操作符、各结构成员选择操作符。它们都是自左向右结合;(2)、 阅读全文
posted @ 2012-05-01 09:18 谷堆旁边 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 第一章一、知识点1、术语“符号”(token)指的是程序的一个基本组成单元。(P15)2、除了字符串与字符常量,符号的中间不能嵌有空白(空格符、制表符、换行符)。例如:下面的表达式:a---b与表达式a -- - b的含义相同,而与a - -- b的含义不同。(P19)3、在C语言中,用单引号引起的一个字符实际上代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被双引号之间的字符以及一个额外的二进制值为零的字符‘\0’初始化。(P21)4、a+++++b唯一有意义的解释是a++ + ++b,但它也有可能被理解为 阅读全文
posted @ 2012-05-01 09:17 谷堆旁边 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 第十一章一、知识点1、面向对象的关键就是把一些数据和对这些数据进行操作的代码组合在一起,并用某种手法将它们做成一个单元。面向对象编程的特点是继承和动态绑定。C++ 通过类的派生支持继承,通过虚拟函数支持动态绑定。虚拟函数提供了一种封装类体系实现细节的方法。(P247)2、面向对象编程的关键概念:(P248)(1)、类:类是一种用户定义类型,就好像是int这样的内置类型一样。内置类型已经有了一套完善的针对它的操作(如算术运算等),类机制也必须允许程序员规定他所定义的类能够进行的操作。类里面的任何东西被称作类的成员。(2)、对象:某个类的一个特定变量,就像j可能是int类型的一个变量一样,对象也可 阅读全文
posted @ 2012-05-01 09:15 谷堆旁边 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 第十章一、知识点1、C标准规定%s说明符的参数必须是一个指向字符数组的指针。所以如:char *p = NULL;printf("%s", p);这是不正确的。NULL是一个指针,但它并不指向一个字符数组。(P236)2、在C语言中,数组是静态的,数组的长度在编译时已确定不变:(P237)3、在C语言中实现动态数组:(P239)二、问题1、编写一个main()程序,使用上面提到的那个函数。检查一下原先的数组,并填充足够的元素,使之调用realloc()函数进行扩张。(P241) 阅读全文
posted @ 2012-05-01 00:17 谷堆旁边 阅读(168) 评论(0) 推荐(0) 编辑
  2012年4月30日
摘要: 第九章一、知识点1、所有作为函数参数的数组名总是可以通过编译器转换成指针。然而,数组和指针在编译器处理时是不同的,在运行时的表示形式也是不一样的,并可能产生不同的代码。对编译器而言,一个数组就是一个地址,一个指针就是一个地址的地址。(P205)2、什么时候数组和指针是相同的?(P207)(1)、表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针;(2)、下标总是与指针的偏移量相同;(3)、在函数参数的声明中,数组名被编译器当作指向该数组第一个元素的指针。3、在C语言中,所有非数组形式的数据实参均以传值形式(对实参作一份拷贝并传递给调用的函数,函数不能修改作为实参的实际变量 阅读全文
posted @ 2012-04-30 23:26 谷堆旁边 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 第八章一、知识点1、图标或者图形,是一种小型的位模式映射于屏幕产生的图像。一个位代表图像上的一个像素。如果一个位被设置,那么它所代表的像素就是“亮”的。(P175)2、在C语言中,字符常量的类型是int,而在C++中它们的类型是char。例如:printf("%d", sizeof 'A');这行代码的输出结果是4,即int的长度;而如果在.cpp文件中输入这段代码,则结果为1,即char的长度。(P177)3、值得警惕的地方是参数也会被提升。在函数的参数传递时会发生隐式类型转换。在K&R C中,由于函数的参数也是表达式,所以也会发生类型提升。在AN 阅读全文
posted @ 2012-04-30 23:24 谷堆旁边 阅读(396) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 下一页