C语言深度解剖:解开程序员面试笔试的秘密.pdf

C语言深度解剖:解开程序员面试笔试的秘密.pdf
 

书籍描述

编辑推荐
《C语言深度解剖:解开程序员面试笔试的秘密(第2版)》适合广大计算机系学生、初级程序员参考学习,也适合计算机系教师、中高级程序员参考使用。

名人推荐
本书从另一个层面来让你更深地了解C语言的精华所在,很好的一本书。
——网友 zuoshaobi_kzcj4
这是一部经典的C语言讲解教案,你可以在其中学习到你从没思考过的关键知识!
——网友 C1989
如果是学习过C语言的人,那么看几页就会觉得很不一般,大力推荐学过或正在学习C语言的人阅读此书,绝对受益匪浅。
——网友 caliow
偶然在网上看到这本书,读毕,获益颇多。看过不少C语言的书籍,貌似很少有哪本书提过哪些东西应该写在.h头文件里,哪些东西应该写在.cpp里。
——网友 惊羽九天
强烈推荐,两位老师20年编程工作的经验总结,一位资深嵌入式工程师的呕心沥血之作!堪称同类资料中之经典中的经典。
——网友 HXW718059156
这是一篇C语言高手的箴言,将C语言的精髓展示出来。
——网友 lingzhimeng
很好,对有些问题的见解很有深度,提出了很多人没有想到的问题,其中对关键字的解释很有创意,诸如static等,用了很多很好的例子,值得一看。
——网友 FengHui

作者简介
陈正冲,湖南沅江人,毕业于长春光学精密机械学院数学系。具有丰富的嵌入式软件开发与管理经验,曾多次举办各种技术和管理方面的讲座和培训。讲课深入、透彻、幽默,深受学员好评。目前从事与CMMI相关的流程管理方面的工作。

目录
第1章 关键字
1.1 最宽宏大量的关键字——auto
1.2 最快的关键字——register
1.2.1皇帝身边的小太监——寄存器
1.2.2 使用register 修饰符的注意点
1.3 最名不符实的关键字——static
1.3.1 修饰变量
1.3.2 修饰函数
1.4 基本数据类型——short、int、long、char、float、double
1.4.1 数据类型与“模子”
1.4.2 变量的命名规则
1.5 最冤枉的关键字——sizeof
1.5.1 常年被人误认为函数
1.5.2 sizeof(int)* p表示什么意思
1.6 signed、unsigned关键字
1.7 if、else组合
1.7.1 bool变量与“零值”进行比较
1.7.2 float变量与“零值”进行比较
1.7.3 指针变量与“零值”进行比较
1.7.4 else到底与哪个if配对呢
1.7.5 if语句后面的分号
1.7.6 使用if语句的其他注意事项
1.8 switch、case组合
1.8.1 不要拿青龙偃月刀去削苹果
1.8.2 case关键字后面的值有什么要求吗
1.8.3 case语句的排列顺序
1.8.4 使用case语句的其他注意事项
1.9 do、while、for关键字
1.9.1 break与continue的区别
1.9.2 循环语句的注意点
1.10 goto关键字
1.11 void关键字
1.11.1 void a
1.11.2 void修饰函数返回值和参数
1.11.3 void指针
1.11.4 void不能代表一个真实的变量
1.12 return关键字
1.13 const关键字也许该被替换为readonly
1.13.1 const修饰的只读变量
1.13.2 节省空间,避免不必要的内存分配,同时提高效率
1.13.3 修饰一般变量
1.13.4 修饰数组
1.13.5 修饰指针
1.13.6 修饰函数的参数
1.13.7 修饰函数的返回值
1.14 最易变的关键字——volatile
1.15 最会带帽子的关键字——extern
1.16 struct关键字
1.16.1 空结构体多大
1.16.2 柔性数组
1.16.3 struct与class的区别
1.17 union关键字
1.17.1 大小端模式对union类型数据的影响
1.17.2 如何用程序确认当前系统的存储模式
1.18 enum关键字
1.18.1 枚举类型的使用方法
1.18.2 枚举与#define宏的区别
1.19 伟大的缝纫师——typedef关键字
1.19.1 关于马甲的笑话
1.19.2 历史的误会——也许应该是typerename
1.19.3 typedef与#define的区别
1.19.4 #define a int(10)与typedef int a(10)
第2章 符号
2.1 注释符号
2.1.1 几个似非而是的注释问题
2.1.2 y——x/* p
2.1.3 怎样才能写出出色的注释
2.2 接续符和转义符
2.3 单引号、双引号
2.4 逻辑运算符
2.5 位运算符
2.5.1 左移和右移
2.5.20x01<<2+3的值为多少
2.6 花括号
2.7 ++、--操作符
2.7.1 ++i+++i+++i
2.7.2 贪心法
2.82/(-2)的值是多少
2.9 运算符的优先级
2.9.1 运算符的优先级表
2.9.2 一些容易出错的优先级问题
第3章 预处理
3.1 宏定义
3.1.1 数值宏常量
3.1.2 字符串宏常量
3.1.3 用define宏定义注释符号“?”
3.1.4 用define宏定义表达式
3.1.5 宏定义中的空格
3.1.6 #undef
3.2 条件编译
3.3 文件包含
3.4 #error预处理
3.5 #line预处理
3.6 #pragma预处理
3.6.1 #pragma message
3.6.2 #pragma code_seg
3.6.3 #pragma once
3.6.4 #pragma hdrstop
3.6.5 #pragma resource
3.6.6 #pragma warning
3.6.7 #pragma comment
3.6.8 #pragma pack
3.7“#”运算符
3.8“##”预算符
第4章 指针和数组
4.1 指针
4.1.1 指针的内存布局
4.1.2“*”与防盗门的钥匙
4.1.3 int*p=NULL和*p=NULL有什么区别
4.1.4 如何将数值存储到指定的内存地址
4.1.5 编译器的bug
4.1.6 如何达到手中无剑、胸中也无剑的境界
4.2 数组
4.2.1 数组的内存布局
4.2.2 省政府和市政府的区别——&a(0)和&a的区别
4.2.3 数组名a作为左值和右值的区别
4.3 指针和数组之间的恩恩怨怨
4.3.1 以指针的形式访问和以下标的形式访问
4.3.2 a和&a的区别
4.3.3 指针和数组的定义与声明
4.3.4 指针和数组的对比
4.4 指针数组和数组指针
4.4.1 指针数组和数组指针的内存布局
4.4.2 int(*)(10)p2——也许应该这么定义数组指针
4.4.3 再论a和&a之间的区别
4.4.4 地址的强制转换
4.5 多维数组和多级指针
4.5.1 二维数组
4.5.2 二级指针
4.6 数组参数和指针参数
4.6.1 一维数组参数
4.6.2 一级指针参数
4.6.3 二维数组参数和二级指针参数
4.7 函数指针
4.7.1 函数指针的定义
4.7.2 函数指针的使用
4.7.3 (*(void(*)())0)()——这是什么
4.7.4 函数指针数组
4.7.5 函数指针数组指针
第5章 内存管理
5.1 什么是野指针
5.2 栈、堆和静态区
5.3 常见的内存错误及对策
5.3.1 指针没有指向一块合法的内存
5.3.2 为指针分配的内存太小
5.3.3 内存分配成功,但并未初始化
5.3.4 内存越界
5.3.5 内存泄漏
5.3.6 内存已经被释放了,但是继续通过指针来使用
第6章 函数
6.1 函数的由来与好处
6.2 编码风格
6.3 函数设计的一般原则和技巧
6.4 函数递归
6.4.1 一个简单但易出错的递归例子
6.4.2 不使用任何变量编写strlen函数
第7章 文件结构
7.1 文件内容的一般规则
7.2 文件名命名的规则
7.3 文件目录的规则
第8章 关于面试的秘密
8.1 外表形象
8.1.1 学生就是学生,穿着符合自己身份就行了
8.1.2 不要一身异味,熏晕考官对你没好处
8.1.3 女生不要带2个以上耳环,不要涂指甲
8.2 内在表现
8.2.1 谈吐要符合自己身份,切忌不懂装懂、满嘴胡咧咧
8.2.2 态度是一种习惯,习惯决定一切
8.2.3 要学会尊敬别人和懂礼貌
8.3 如何写一份让考官眼前一亮的简历
8.3.1 个人信息怎么写
8.3.2 求职意向和个人的技能、获奖或荣誉情况怎么突出
8.3.3 成绩表是应届生必须要准备的
附录1 C语言基础测试题
附录2 C语言基础测试题答案
后记
参考文献

文摘
版权页:

C语言深度解剖:解开程序员面试笔试的秘密

插图:

C语言深度解剖:解开程序员面试笔试的秘密

1.安息吧,路德维希•凡•贝多芬
在《Code Complete》这本书中,作者记录了这样一个故事:
有位负责维护的程序员半夜被叫起来,去修复一个出了问题的程序。但是程序的原作者已经离职,没有办法联系上他。这个程序员从未接触过这个程序,在仔细检查所有的说明后,他只发现了一条注释,如下:
MOV AX 723h ;R.I.P.L.V.B.
这个维护程序员通宵研究这个程序,还是对注释百思不得其解。虽然最后他还是把程序的问题成功排除了,但这个神秘的注释让他耿耿于怀。说明一点:汇编程序的注释是以分号开头。
几个月后,这名程序员在一个会议上遇到了注释的原作者。经过请教后,才明白这条注释的意思:安息吧,路德维希?凡?贝多芬(Rest in peace,Ludwig Van Beethoven)。贝多芬于1827年逝世,而1827的十六进制正是723。这真是让人哭笑不得!
2.Windows大师们用注释讨论天气问题
还有个例子:前些日子Windows的源代码曾经泄漏过一部分。人们在看大师们的这部分经典作品时,却发现很多与代码毫无关系的注释:有的注释在讨论天气,有的在讨论明天吃什么,还有的在骂公司和老板。这些注释虽然与代码无关,但总比上面那个让“贝多芬安息”的注释要强些的,至少不会让你抓狂。不过这种事情只有大师们才可以做,你可千万别用注释讨论天气。
3.出色注释的基本要求
(规则2—1)注释应当准确、易懂,防止有二义性。错误的注释不但无益反而有害。
(规则2—2)边写代码边注释,修改代码的同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要及时删除。
(规则2—3)注释是对代码的“提示”,而不是文档。程序中的注释应当简单明了,注释太多了会让人眼花缭乱。
(规则2—4)一目了然的语句不加注释。
例如:i++;//i加1——多余的注释
(规则2—5)对于全局数据(全局变量、常量定义等)必须要加注释。
(规则2—6)注释采用英文,尽量避免在注释中使用缩写,特别是不常用的缩写。
因为不一定所有的编译器都能显示中文,所以别人打开你的代码,你的注释也许是一团乱码。还有,你的代码不一定是懂中文的人阅读。

内容简介
《C语言深度解剖:解开程序员面试笔试的秘密(第2版)》由作者结合自身多年嵌入式C语言开发经验和平时讲解C语言的心得体会整理而成,其中有很多作者独特的见解或看法。由于并不是从头到尾讲解C语言的基础知识,所以《C语言深度解剖:解开程序员面试笔试的秘密(第2版)》并不适用于C语言零基础的读者,其内容要比一般的C语言图书深得多、细致得多。其中有很多问题是各大公司的面试或笔试题。第2版中新增加了部分编程规范的内容。

购买书籍

当当网购书 京东购书 卓越购书

PDF电子书下载地址

相关书籍

搜索更多