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、作为80x86内存模型最基本的形式,8086中的段是一块64K的内存区域,由一个段寄存器所指向。内存地址的形成经过是:取得段寄存器的值,左移4位(相当于乘上16),或者换中思路,把段寄存器的值看成是20位的,也就是在值得右边扩充4个0。然后就是16位的偏移地址,它表示段内的地址。如果把段寄存器的值(经过移位)加上偏移地址,就得到最终的地址。不同的段地址加上偏移地址所形成的值可能指向同一个内存地址。(P146)2、讨论数字概念时,需要注意所有的磁盘制造商都是使用十进制数而不是二进制数来表示的磁盘的容量。所以2GB的磁盘可以存储2000000000个字节的数据而不是214748 阅读全文
posted @ 2012-04-30 23:20 谷堆旁边 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 第六章一、知识点1、代码和数据的区别也可以认为是编译时和运行时的分界线。编译器的绝大部分工作都跟翻译代码有关;必要的数据存储管理的绝大部分都在运行时进行。(P121)2、"a.out"是“assembler output(汇编程序输出)”的缩写形式。(P121)3、就目标文件而言,段(segments)是二进制文件中简单的区域,里面保存了和某种特定类型(如符号表条目)相关的所有信息。一个段一般包含几个section。段表示一个二进制文件相关的内容块。(P122)4、一个可执行文件一般包含三个段:文本段、数据段、bss段(由符号开始的块)。BSS段只保存没有值得变量,所以事实 阅读全文
posted @ 2012-04-30 23:18 谷堆旁边 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 第五章一、知识点1、动态链接可以从两个方面提高性能:(1)、动态链接可执行文件比相同功能的静态链接可执行文件的体积小。它能够节省磁盘空间和虚拟内存,因为函数库只有在需要时才被映射到进程中。(2)、所有动态链接到某个特定函数库的可执行文件在运行时共享该函数库的一个单独拷贝。操作系统内核保证映射到内存中的函数库可以被所有使用它们的进程共享。这就提供了更好的I/O和交换空间利用率,节省了物理内存,从而提高了系统的整体性能。如果可执行文件是静态链接的,每个文件都将拥有一份函数库的拷贝,显然这极为浪费。(P100)2、使用函数库时的5个基本的约定:(P103)(1)、动态库文件的扩展名是“.so”,而静 阅读全文
posted @ 2012-04-30 23:16 谷堆旁边 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 第四章一、知识点1、C语言中的对象必须有且只有一个定义,但它可以有多个extern声明。定义是一种特殊的声明,它只能出现在一个地方,确定对象的类型并分配内存,用于创建新的对象;而声明可以多次出现,描述对象的类型,用于指代其他地方定义的对象(例如在其他文件里)例:extern int my_array[];extern对象告诉编译器对象的类型和名字,对象的内存分配则在别处进行。由于并未在声明中为数组分配内存,所以不需要提供关于数组长度的信息。对于多位数组,需要提供除最左边一维之外其他维的长度。(P88)2、编译器为每个变量分配一个地址(左值)。这个地址在编译时可知,而且该变量在运行时一直保存于这 阅读全文
posted @ 2012-04-30 23:11 谷堆旁边 阅读(282) 评论(0) 推荐(0) 编辑