Expert C Programing
xiaoguo8705
当下今天now
展开
-
Expert C Programing——阅读笔记五
第七章 对内存的思考 (1)虚拟内存:基本思路是用廉价但缓慢的磁盘来扩充快速却昂贵的内存。 在任一给定时刻,程序实际需要使用的虚拟内存区段的内容被载入物理内存中。当物理内存中的数据有一段时间未被使用,它们就可能被转移到硬盘中,节省下来的物理内存空间用于载入需要使用的其他数据。 虚拟内存通过“页”的形式组织。页就是操作系统在磁盘和内存之间移来移去或进行保护原创 2013-03-04 19:13:55 · 166 阅读 · 0 评论 -
Expert C Programing——阅读笔记四
第五章 对连接器的思考 (1)目标文件并不能直接执行,它首先需要载入到链接器中。链接器确认main函数为初始进入点(程序开始执行的地方),把符号引用(symbolic reference)绑定到内存地址,把所有的目标文件集中在一起,再加上库文件,从而产生可执行文件。 (2)如果函数库的一份拷贝是可执行文件的物理组成部分,那么称之为静态链接;如果可执行文件只是包含了文件名,让载入器在运行时能够原创 2013-03-05 09:17:06 · 433 阅读 · 0 评论 -
Expert C Programing——阅读笔记六
第八章 为什么程序员无法分清万圣节和圣诞节 (1)printf("%d", sizeof 'A'); 该语句打印的结果为4(机器上int的长度),字符常量的类型是int,根据提升规则,它由char转换为int。 “在表达式中,每个char都被转换为int...注意所有位于表达式中的float都被转换为double...由于函数参数也是一个表达式,所以当参数传递给函数时原创 2013-03-06 15:24:21 · 415 阅读 · 0 评论 -
Expert C Programing——阅读笔记三
第四章 令人震惊的事实:数组和指针并不相同 (1)声明和定义 C语言的对象(与C++中的对象无关)必须有且只有一个定义,但它可以有多个extern声明。 定义是一种特殊的声明,它创建了一个对象;声明简单地说明了在其他地方创建的对象的名字,它允许你使用这个名字。 区分: 声明相当于普通的声明:它所说明的并非自身,而是描述其他地方创建的对象; 定义相当于特殊的声明:它为对象分配内存。原创 2013-03-02 15:42:06 · 181 阅读 · 0 评论 -
Expert C Programing阅读笔记二
第三章 分析C语言的声明 (1)const const int * grape; //指针所指向的对象是只读的 int const * grape; //指针所指向的对象是只读的 int * const grape_jelly; //指针是只读的 (2)在合法的声明中存在限制条件 不可以像下面这样做: 函数的返回值不能是一个函数,也不能是一个数组; 数组里面不能有函数。原创 2013-03-02 11:51:32 · 200 阅读 · 0 评论 -
Expert C Programing—阅读笔记一
第一章 C:穿越时空的迷雾 (1)在宏的扩展中,空格会对扩展的结果造成很大的影响。 #define a(y) a_expanded(y) a(x); 被扩展为:a_expanded(x); #define a (y) a_expanded(y) a(x); 则被扩展为:(y) a_expanded(y)(x) 观点:对于宏这样的预处理器,只应该适量使用。 (2)const最原创 2013-03-01 16:55:46 · 251 阅读 · 0 评论