书籍详情
C程序设计伴侣
作者:陈良乔
出版社:人民邮电出版社
出版时间:2012-09-25
ISBN:9787115290953
定价:¥49.00
购买这本书可以去
内容简介
《C程序设计伴侣:帮你更好地理解谭浩强老师的那本书以及更多!》是谭浩强老师经典的《C 程序设计》(以下简称原书)一书的最佳伴侣,是对原书有益且神奇的补充。本书对原书中没有讲透彻的没有讲明白的那些概念、知识和技术点进行了深刻却易于理解的讲解,并把原书中遗漏的、忽视的,甚至是多少有点问题的,以及那些未曾涉及的但作为初学者或称为未来的程序员绝对应该知道的基础知识、编程素养、编程思想,以及业内行规一并讲解清楚了。 较之原书,这本伴侣更加的有趣、更加的通俗易懂。在内容上,较之原书,这本伴侣更加的深刻、更加的透彻,具有更加广阔的视野和更加深厚的内涵。在实用性上,这本伴侣较之原书更加的实战,可以让你养成良好且符合业界标准的编程习惯和编程思想,为今后的继续前行打下必要而优秀的基础。
作者简介
陈良乔一个喜欢写作的程序员。一个喜欢编程的文艺青年。连续八年获得微软最有价值专家(MVP)称号。曾任东软数字医疗项目经理;德国IB&T中国公司架构师。挚爱技术,好分享。作为讲师进行百人以上微软技术讲座数十次。因撰写一系列有分量的VisualStudio和Windows 7技术文章荣获“MSDN原创之星”称号。因参与VisualStudio的工作,荣获“VisualStudio贡献水晶奖杯”。生性乐观,敏而好学,乐于分享。平素喜好新鲜事物,但绝非新潮技术的追捧者,至今仍执迷C/C++这些古老而新鲜的技术。好舞文弄墨,传播心得。著有《我的第一本C++书》。组织并参与翻译《C++11 FAQ中文版》。作者网站(及本书源代码下载地址):http://chenlq.net欢迎亲爱的读者们访问交流
目录
目 录
注:浅灰色的目录标题是本书所对应的谭浩强《C程序设计》(第四版)中的相应章节的目录标题。
第1章 C语言背后的故事程序设计和C语言 1
1.1 计算机程序是什么什么是计算机程序 1
1.2 计算机语言又是什么什么是计算机语言 1
1.2.A 如何用计算机语言来表达一个程序 2
1.2.B 从汇编语言到高级语言——风格各异的计算机语言 4
1.3 C语言真正的特点及其演变C语言的发展及其特点 6
1.3A C语言与C++不得不说的那点事 8
1.3B 我们为什么现在还要学习C语言 9
1.4 第一次的亲密接触——Hello,World最简单的C语言程序 11
1.4.A 最简单的C语言程序背后的故事——它的汇编代码是如何被执行的 12
1.4.1 比最简单再复杂一点点最简单的C语言程序举例 15
1.4.2 程序的三要素:数据输入、数据处理与数据输出C语言程序的结构 18
1.4.B 编码规范——如何写出简洁优美的代码 19
1.5 C程序开发的两个循环和四个步骤运行C程序的步骤与方法 21
1.5A 工欲善其事,必先利其器——使用Eclipse编写C程序 22
1.5B 使用GCC编译C语言程序 24
1.6 程序设计的瀑布模型程序设计的任务 25
第2章 解决问题的思路——算法算法——程序的灵魂 28
2.1 先有算法,后有程序什么是算法 28
2.1A 算法的时间复杂度和空间复杂度 31
2.2 如何将抽象的算法实现为具体的代码简单的算法举例 36
2.3 算法的特征——简单,没啥可说的算法的特性 38
2.4 一群聪明的程序员是怎么把事情搞砸的怎样表示一个算法 38
2.5 掌握结构化的程序设计结构化程序设计方法 39
2.5A 结构化程序设计的基本思想、步骤与流程 39
2.5B“自顶向下,逐步求精”:把“问题”变成“程序”的魔法 40
第3章 顺序结构的程序设计最简单的C程序设计——顺序程序设计 44
3.1 顺序结构程序举例——简单,没啥可说的顺序程序设计举例 45
3.1A 如何理解程序的执行顺序 45
3.2 如何描述数据,如何对数据进行运算数据的表现形式及其运算 46
3.2.1 常量、变量、常变量及符号常量和变量 46
3.2.2 数据类型及举例 数据类型 48
3.2.3 整型数据及如何选择合适的类型整型数据 51
3.2.4 字符型数据及举例字符型数据 52
3.2.5 浮点型数据及比较大小时的特别注意浮点型数据 53
3.2.6 如何强制指定常量的数据类型怎样确定常量的类型 55
3.2.7 运算符和表达式及使用经验和建议运算符和表达式 55
3.3 基本程序单位——语句 C语句 58
3.3.1 C语言的语句分类C语句的作用和分类 58
3.3.2 赋值语句及其使用注意最基本的语句——赋值语句 60
3.4 数据从哪里来,又到哪里去?数据的输入输出 61
3.4.1 输入输出举例——简单,没啥可说的输入输出举例 61
3.4.2 输入输出的概念——简单,没啥可说的有关数据输入输出的概念 61
3.4.3 使用printf函数进行格式化数据输出用printf函数输出数据 61
3.4.4 使用scanf函数进行格式化数据输入用scanf函数输入数据 62
3.4.5 单字符的输入输出及敏感信息输入函数字符数据的输入输出 64
3.4.5A 字符串数据的简单输入输出 66
第4章 选择结构的程序设计选择结构程序设计 67
4.1 选择结构和条件判断——交通灯例子选择结构和条件判断 67
4.2—4.3使用if语句实现选择结构 69
4.4 逻辑运算符及表达式逻辑运算符和逻辑表达式 69
4.4.1 逻辑运算符及优先级逻辑运算符及其优先次序 69
4.4.1A 合理的出错处理——让你的程序更受欢迎 71
4.4.2 逻辑表达式及其使用注意逻辑表达式 71
4.4.3 逻辑型变量——时控灯例子逻辑型变量 72
4.5 条件运算符及表达式条件运算符和条件表达式 73
4.6 条件结构的嵌套——拜金女择偶例子选择结构的嵌套 73
4.7 使用switch语句实现多分支选择结构——看天穿衣例子用switch语句实现多分支选择结构 76
4.8 综合运用——猜数字游戏选择结构程序综合举例 78
第5章 循环结构的程序设计循环结构程序设计 82
5.1 为什么需要循环控制——简单,没啥可说的为什么需要循环控制 82
5.1A 循环结构的四个要素 82
5.2 如果条件满足,就一直做某事的while用while语句实现循环 84
5.3 一直做某事,直到条件不满足的do…while用do…while语句实现循环 86
5.4 最完备最复杂的循环语句for用for语句实现循环 87
5.5 更复杂的数据处理——嵌套的循环循环的嵌套 89
5.6 如何选择合适的循环结构几种循环的比较 89
5.7 改变循环的状态改变循环执行的状态 90
5.7.1—5.7.2用break和continue语句提前终止循环 90
5.7.3 break和continue的不同break语句和continue语句的区别 90
5.8 综合运用——检测磁盘剩余容量与统计字符串中的单词数循环程序举例 91
第6章 处理批量数据的利器——数组利用数组处理批量数据 95
6.1 如何定义和引用一维数组怎样定义和引用一维数组 95
6.1.1 如何定义一维数组——保存学生成绩的例子怎样定义一维数组 95
6.1.2 如何引用一维数组怎样引用一维数组元素 96
6.1.3 使用memset()函数进行一维数组的初始化一维数组的初始化 98
6.1.4 用qsort()函数对数组进行排序一维数组程序举例 99
6.2 如何定义和引用二维数组怎样定义和引用二维数组 101
6.2.1 如何定义二维数组及二维数组的内存排列方式怎样定义二维数组 101
6.2.2 如何引用二维数组怎样引用二维数组的元素 103
6.2.3 使用memset()函数进行二维数组的初始化二维数组的初始化 103
6.2.4 对二维数组中的数据进行排序二维数组程序举例 103
6.2.4.A分析问题,定义二维数组描述批量数据 104
6.2.4.B 向二维数组输入数据 104
6.2.4.C用qsort()函数对二维数组进行排序 105
6.2.4.D 输出二维数组结果 107
6.2.A 扩展:多维数组的使用 108
6.3 字符数组的本质 字符数组 109
6.3.1—6.3.3如何定义字符数组 109
6.3.4 字符串和字符数组的区别字符串和字符串结束标志 109
6.3.5 字符数组和字符串的输入输出字符数组的输入输出 110
6.3.6 使用字符串处理函数完成字符串处理任务使用字符串处理函数 111
6.3.6.A用gets()和puts()输入输出字符串 111
6.3.6.B用strcat()连接两个字符串 111
6.3.6.C用strchr()和strstr()查找字符串 113
6.3.6.D用strcmp()比较字符串 114
6.3.7 综合运用——自己写一个strsub()函数截取字符串字符数组应用举例 115
6.A 如何运用数组处理批量数据——一个计算平均血糖的例子 118
6.A.A 什么时候应该使用数组 118
6.A.B 如何将数据输入到数组 118
6.A.C 如何处理数组中的数据 119
6.A.D 数组使用的三部曲:定义数组、输入数据、处理数据 120
第7章 模块化程序设计的根基——函数用函数实现模块化程序设计 122
7.1 为什么要用函数——便于代码的管理和复用为什么要用函数 122
7.2 如何声明函数 怎样定义函数 123
7.2.1 为什么要声明函数为什么要定义函数 124
7.2.2 声明函数的方法定义函数的方法 124
7.2.2A 声明函数的三要素:返回值、函数名、参数列表 125
7.3 如何调用函数 调用函数 129
7.3.1 调用的形式及调用语句函数调用的形式 130
7.3.2 函数调用时的数据传递——两个方向的传递函数调用时的数据传递 130
7.3.2A 如何向函数传递体积很大的数据 132
7.3.3 调用的过程——简单,没啥可说的函数调用的过程 134
7.3.4 关于函数的返回值函数的返回值 134
7.3.4A 如何从函数返回多个结果数据 135
7.4 编译器对函数声明的要求对被调用函数的声明和函数原型 138
7.4A 创建一个我们自己的头文件 138
7.A 站在巨人的肩膀上——如何使用已有的函数库 141
7.B 我也能成为巨人——如何创建一个函数库 147
7.5 嵌套的函数调用函数的嵌套调用 152
7.6 函数的递归调用——统计字符串出现的次数函数的递归调用 153
7.C 让函数飞——在C语言中嵌入汇编代码 156
7.7 将数组作为函数参数传递数组作为函数参数 159
7.8 变量的生存期局部变量和全局变量 159
7.8.1 局部变量的定义及作用域局部变量 160
7.8.1A 不要从函数返回指向局部变量的指针 163
7.8.2 全局变量及跨文件的全局变量全局变量 163
7.9 变量的存储方式及其区别变量的存储方式和生存期 165
7.10 变量的声明和定义的区别——是否建立存储空间关于变量的声明和定义 166
7.11 控制函数的访问范围内部函数和外部函数 167
7.D 函数使用的四项基本原则 169
第8章 指针?没啥好怕的!善于利用指针 172
8.1 什么是指针 指针是什么 172
8.2 什么是指针变量 指针变量 173
8.2.1 使用指针变量的例子——指针的四大用途使用指针变量的例子 173
8.2.1A 什么是NULL指针 178
8.2.2 如何定义指针变量怎样定义指针变量 180
8.2.2A 内存的动态申请与释放 182
8.2.3 如何引用指针变量怎样引用指针变量 184
8.2.3A 指针变量存放在哪里呢? 185
8.2.4 使用指针变量作为函数参数的场合指针变量作为函数参数 186
8.3 更灵活的数组访问方式——使用指针访问数组通过指针引用数组 187
8.3.1—8.3.3A使用指针访问数组的要点 187
8.3.4 如何向函数传递一个数组用数组名作函数参数 190
8.3.5 通过指针引用多维数组的要点——统计学生成绩的例子通过指针引用多维数组 190
8.4 利用指针引用字符串通过指针引用字符串 196
8.5 定义指向函数的指针指向函数的指针 197
8.5.1 了解函数指针什么是函数指针 197
8.5.1A 函数指针背后的故事——剖析它的汇编代码 198
8.5.2 利用函数指针变量调用函数用函数指针变量调用函数 201
8.5.3 函数指针变量的定义和使用怎样定义和使用指向函数的指针变量 201
8.5.4 用函数指针作函数参数——在函数之间传递函数,即传递操作
用指向函数的指针作函数参数 204
8.6 使用指针作为函数的返回值返回指针值的函数 208
8.7 指针数组及指向指针的指针指针数组和多重指针 210
8.7.1 什么是指针数组——一个电磁炉火力控制程序什么是指针数组 210
8.7.2 指向指针的指针指向指针数据的指针 212
8.7.3 向main()函数传递数据指针数组作main函数的形参 215
8.8 动态内存分配及动态调整动态内存分配与指向它的指针变量 216
8.9 指针的“醒世恒言”有关指针的小结 217
8.A 如何避免错误地使用指针 218
第9章 建立自己的数据类型用户自己建立数据类型 223
9.1 结构体变量登场定义和使用结构体变量 224
9.1.1—9.1.3关于这三小节的特别说明 224
9.1.A 定义结构体应该注意的问题 224
9.1.B 使用结构体以及它的数据成员 225
9.2 使用结构体数组——利用qsort()函数对数组排序使用结构体数组 228
9.2.1—9.2.2关于这两小节的特别说明 230
9.3 利用结构体指针减少传递的数据量结构体指针 231
9.3.1—9.3.3关于这三小节的特别说明 232
9.4 笔试必考,面试必问的数据结构——链表用指针处理链表 233
9.4.1 链表是神马 什么是链表 233
9.4.2 如何建立静态链表建立简单的静态链表 234
9.4.3 如何建立动态链表建立动态链表 234
9.4.4 如何输出链表 输出链表 236
9.4.A 链表数据的处理:对链表进行排序和查找 237
9.4.B 链表数据的处理:查找结点 241
9.4.C 释放一个链表 245
9.5 共用体类型的定义和使用共用体类型 245
9.5.1—9.5.3关于这三小节的特别说明 247
9.6 什么是枚举类型使用枚举类型 247
9.7 数据类型也可以有个更好记更好用的绰号——用typedef声明新的数据类型用typedef声明新类型名 249
第10章 文件的输入与输出对文件的输入输出 250
10.1 在C中文件的概念是怎样的C文件的有关基本知识 250
10.1.1—10.1.5关于这五小节的特别说明 251
10.1A C语言所处理的文件类型 251
10.2 如何打开与关闭文件打开与关闭文件 252
10.2.1 使用fopen函数打开数据文件及注意事项用fopen函数打开数据文件 252
10.2.1A 用freopen()重定向标准输入输出流 253
10.2.2 使用fclose函数关闭数据文件及注意事项用fclose函数关闭数据文件 255
10.3 对数据文件进行顺序读写顺序读写数据文件 255
10.3.1—10.3.2怎样向文件读写字符和字符串 255
10.3.3 使用函数来进行数据文件的格式化读写用格式化的方式读写文件 258
10.3.4 二进制方式的文件读写——读写一张图片用二进制方式向文件读写一组数据 258
10.3.A 文件读写的“三大纪律” 263
10.4 在任意位置读写数据文件随机读写数据文件 264
10.4.1—10.4.2关于这两小节的特别说明 268
10.5—10.5A扩展:访问文件的各种属性 268
10.5A.A如何判断文件是否存在 268
10.5A.B如何获得文件的日期和大小 270
第A章 程序是如何炼成的 272
A.A 问题的提出——统计网页中的词频 272
A.B 自顶向下:分析问题,划分模块 272
A.B.A 分析数据输入模块 273
A.B.B 分析数据处理模块 273
A.B.C 分析数据输出模块 275
A.C 逐步求精:用函数实现各个模块 275
A.C.A 实现数据输入模块 275
A.C.B 实现数据处理模块 277
A.C.C 组装实现数据预处理模块 280
A.C.D 实现计算词频模块 283
A.C.E 实现文件排序模块 285
A.C.F 实现数据输出模块 286
A.C.G打扫战场:释放动态申请的内存 287
A.D 百炼成钢:如何调试我们的程序 288
A.E 程序就是这样炼成的 291
第B章 接下来我该…… 292
B.A 接下来要读的书 292
B.A.A提升对C语言的理解和掌握 292
B.A.B 做一个有思想的程序员 294
注:浅灰色的目录标题是本书所对应的谭浩强《C程序设计》(第四版)中的相应章节的目录标题。
第1章 C语言背后的故事程序设计和C语言 1
1.1 计算机程序是什么什么是计算机程序 1
1.2 计算机语言又是什么什么是计算机语言 1
1.2.A 如何用计算机语言来表达一个程序 2
1.2.B 从汇编语言到高级语言——风格各异的计算机语言 4
1.3 C语言真正的特点及其演变C语言的发展及其特点 6
1.3A C语言与C++不得不说的那点事 8
1.3B 我们为什么现在还要学习C语言 9
1.4 第一次的亲密接触——Hello,World最简单的C语言程序 11
1.4.A 最简单的C语言程序背后的故事——它的汇编代码是如何被执行的 12
1.4.1 比最简单再复杂一点点最简单的C语言程序举例 15
1.4.2 程序的三要素:数据输入、数据处理与数据输出C语言程序的结构 18
1.4.B 编码规范——如何写出简洁优美的代码 19
1.5 C程序开发的两个循环和四个步骤运行C程序的步骤与方法 21
1.5A 工欲善其事,必先利其器——使用Eclipse编写C程序 22
1.5B 使用GCC编译C语言程序 24
1.6 程序设计的瀑布模型程序设计的任务 25
第2章 解决问题的思路——算法算法——程序的灵魂 28
2.1 先有算法,后有程序什么是算法 28
2.1A 算法的时间复杂度和空间复杂度 31
2.2 如何将抽象的算法实现为具体的代码简单的算法举例 36
2.3 算法的特征——简单,没啥可说的算法的特性 38
2.4 一群聪明的程序员是怎么把事情搞砸的怎样表示一个算法 38
2.5 掌握结构化的程序设计结构化程序设计方法 39
2.5A 结构化程序设计的基本思想、步骤与流程 39
2.5B“自顶向下,逐步求精”:把“问题”变成“程序”的魔法 40
第3章 顺序结构的程序设计最简单的C程序设计——顺序程序设计 44
3.1 顺序结构程序举例——简单,没啥可说的顺序程序设计举例 45
3.1A 如何理解程序的执行顺序 45
3.2 如何描述数据,如何对数据进行运算数据的表现形式及其运算 46
3.2.1 常量、变量、常变量及符号常量和变量 46
3.2.2 数据类型及举例 数据类型 48
3.2.3 整型数据及如何选择合适的类型整型数据 51
3.2.4 字符型数据及举例字符型数据 52
3.2.5 浮点型数据及比较大小时的特别注意浮点型数据 53
3.2.6 如何强制指定常量的数据类型怎样确定常量的类型 55
3.2.7 运算符和表达式及使用经验和建议运算符和表达式 55
3.3 基本程序单位——语句 C语句 58
3.3.1 C语言的语句分类C语句的作用和分类 58
3.3.2 赋值语句及其使用注意最基本的语句——赋值语句 60
3.4 数据从哪里来,又到哪里去?数据的输入输出 61
3.4.1 输入输出举例——简单,没啥可说的输入输出举例 61
3.4.2 输入输出的概念——简单,没啥可说的有关数据输入输出的概念 61
3.4.3 使用printf函数进行格式化数据输出用printf函数输出数据 61
3.4.4 使用scanf函数进行格式化数据输入用scanf函数输入数据 62
3.4.5 单字符的输入输出及敏感信息输入函数字符数据的输入输出 64
3.4.5A 字符串数据的简单输入输出 66
第4章 选择结构的程序设计选择结构程序设计 67
4.1 选择结构和条件判断——交通灯例子选择结构和条件判断 67
4.2—4.3使用if语句实现选择结构 69
4.4 逻辑运算符及表达式逻辑运算符和逻辑表达式 69
4.4.1 逻辑运算符及优先级逻辑运算符及其优先次序 69
4.4.1A 合理的出错处理——让你的程序更受欢迎 71
4.4.2 逻辑表达式及其使用注意逻辑表达式 71
4.4.3 逻辑型变量——时控灯例子逻辑型变量 72
4.5 条件运算符及表达式条件运算符和条件表达式 73
4.6 条件结构的嵌套——拜金女择偶例子选择结构的嵌套 73
4.7 使用switch语句实现多分支选择结构——看天穿衣例子用switch语句实现多分支选择结构 76
4.8 综合运用——猜数字游戏选择结构程序综合举例 78
第5章 循环结构的程序设计循环结构程序设计 82
5.1 为什么需要循环控制——简单,没啥可说的为什么需要循环控制 82
5.1A 循环结构的四个要素 82
5.2 如果条件满足,就一直做某事的while用while语句实现循环 84
5.3 一直做某事,直到条件不满足的do…while用do…while语句实现循环 86
5.4 最完备最复杂的循环语句for用for语句实现循环 87
5.5 更复杂的数据处理——嵌套的循环循环的嵌套 89
5.6 如何选择合适的循环结构几种循环的比较 89
5.7 改变循环的状态改变循环执行的状态 90
5.7.1—5.7.2用break和continue语句提前终止循环 90
5.7.3 break和continue的不同break语句和continue语句的区别 90
5.8 综合运用——检测磁盘剩余容量与统计字符串中的单词数循环程序举例 91
第6章 处理批量数据的利器——数组利用数组处理批量数据 95
6.1 如何定义和引用一维数组怎样定义和引用一维数组 95
6.1.1 如何定义一维数组——保存学生成绩的例子怎样定义一维数组 95
6.1.2 如何引用一维数组怎样引用一维数组元素 96
6.1.3 使用memset()函数进行一维数组的初始化一维数组的初始化 98
6.1.4 用qsort()函数对数组进行排序一维数组程序举例 99
6.2 如何定义和引用二维数组怎样定义和引用二维数组 101
6.2.1 如何定义二维数组及二维数组的内存排列方式怎样定义二维数组 101
6.2.2 如何引用二维数组怎样引用二维数组的元素 103
6.2.3 使用memset()函数进行二维数组的初始化二维数组的初始化 103
6.2.4 对二维数组中的数据进行排序二维数组程序举例 103
6.2.4.A分析问题,定义二维数组描述批量数据 104
6.2.4.B 向二维数组输入数据 104
6.2.4.C用qsort()函数对二维数组进行排序 105
6.2.4.D 输出二维数组结果 107
6.2.A 扩展:多维数组的使用 108
6.3 字符数组的本质 字符数组 109
6.3.1—6.3.3如何定义字符数组 109
6.3.4 字符串和字符数组的区别字符串和字符串结束标志 109
6.3.5 字符数组和字符串的输入输出字符数组的输入输出 110
6.3.6 使用字符串处理函数完成字符串处理任务使用字符串处理函数 111
6.3.6.A用gets()和puts()输入输出字符串 111
6.3.6.B用strcat()连接两个字符串 111
6.3.6.C用strchr()和strstr()查找字符串 113
6.3.6.D用strcmp()比较字符串 114
6.3.7 综合运用——自己写一个strsub()函数截取字符串字符数组应用举例 115
6.A 如何运用数组处理批量数据——一个计算平均血糖的例子 118
6.A.A 什么时候应该使用数组 118
6.A.B 如何将数据输入到数组 118
6.A.C 如何处理数组中的数据 119
6.A.D 数组使用的三部曲:定义数组、输入数据、处理数据 120
第7章 模块化程序设计的根基——函数用函数实现模块化程序设计 122
7.1 为什么要用函数——便于代码的管理和复用为什么要用函数 122
7.2 如何声明函数 怎样定义函数 123
7.2.1 为什么要声明函数为什么要定义函数 124
7.2.2 声明函数的方法定义函数的方法 124
7.2.2A 声明函数的三要素:返回值、函数名、参数列表 125
7.3 如何调用函数 调用函数 129
7.3.1 调用的形式及调用语句函数调用的形式 130
7.3.2 函数调用时的数据传递——两个方向的传递函数调用时的数据传递 130
7.3.2A 如何向函数传递体积很大的数据 132
7.3.3 调用的过程——简单,没啥可说的函数调用的过程 134
7.3.4 关于函数的返回值函数的返回值 134
7.3.4A 如何从函数返回多个结果数据 135
7.4 编译器对函数声明的要求对被调用函数的声明和函数原型 138
7.4A 创建一个我们自己的头文件 138
7.A 站在巨人的肩膀上——如何使用已有的函数库 141
7.B 我也能成为巨人——如何创建一个函数库 147
7.5 嵌套的函数调用函数的嵌套调用 152
7.6 函数的递归调用——统计字符串出现的次数函数的递归调用 153
7.C 让函数飞——在C语言中嵌入汇编代码 156
7.7 将数组作为函数参数传递数组作为函数参数 159
7.8 变量的生存期局部变量和全局变量 159
7.8.1 局部变量的定义及作用域局部变量 160
7.8.1A 不要从函数返回指向局部变量的指针 163
7.8.2 全局变量及跨文件的全局变量全局变量 163
7.9 变量的存储方式及其区别变量的存储方式和生存期 165
7.10 变量的声明和定义的区别——是否建立存储空间关于变量的声明和定义 166
7.11 控制函数的访问范围内部函数和外部函数 167
7.D 函数使用的四项基本原则 169
第8章 指针?没啥好怕的!善于利用指针 172
8.1 什么是指针 指针是什么 172
8.2 什么是指针变量 指针变量 173
8.2.1 使用指针变量的例子——指针的四大用途使用指针变量的例子 173
8.2.1A 什么是NULL指针 178
8.2.2 如何定义指针变量怎样定义指针变量 180
8.2.2A 内存的动态申请与释放 182
8.2.3 如何引用指针变量怎样引用指针变量 184
8.2.3A 指针变量存放在哪里呢? 185
8.2.4 使用指针变量作为函数参数的场合指针变量作为函数参数 186
8.3 更灵活的数组访问方式——使用指针访问数组通过指针引用数组 187
8.3.1—8.3.3A使用指针访问数组的要点 187
8.3.4 如何向函数传递一个数组用数组名作函数参数 190
8.3.5 通过指针引用多维数组的要点——统计学生成绩的例子通过指针引用多维数组 190
8.4 利用指针引用字符串通过指针引用字符串 196
8.5 定义指向函数的指针指向函数的指针 197
8.5.1 了解函数指针什么是函数指针 197
8.5.1A 函数指针背后的故事——剖析它的汇编代码 198
8.5.2 利用函数指针变量调用函数用函数指针变量调用函数 201
8.5.3 函数指针变量的定义和使用怎样定义和使用指向函数的指针变量 201
8.5.4 用函数指针作函数参数——在函数之间传递函数,即传递操作
用指向函数的指针作函数参数 204
8.6 使用指针作为函数的返回值返回指针值的函数 208
8.7 指针数组及指向指针的指针指针数组和多重指针 210
8.7.1 什么是指针数组——一个电磁炉火力控制程序什么是指针数组 210
8.7.2 指向指针的指针指向指针数据的指针 212
8.7.3 向main()函数传递数据指针数组作main函数的形参 215
8.8 动态内存分配及动态调整动态内存分配与指向它的指针变量 216
8.9 指针的“醒世恒言”有关指针的小结 217
8.A 如何避免错误地使用指针 218
第9章 建立自己的数据类型用户自己建立数据类型 223
9.1 结构体变量登场定义和使用结构体变量 224
9.1.1—9.1.3关于这三小节的特别说明 224
9.1.A 定义结构体应该注意的问题 224
9.1.B 使用结构体以及它的数据成员 225
9.2 使用结构体数组——利用qsort()函数对数组排序使用结构体数组 228
9.2.1—9.2.2关于这两小节的特别说明 230
9.3 利用结构体指针减少传递的数据量结构体指针 231
9.3.1—9.3.3关于这三小节的特别说明 232
9.4 笔试必考,面试必问的数据结构——链表用指针处理链表 233
9.4.1 链表是神马 什么是链表 233
9.4.2 如何建立静态链表建立简单的静态链表 234
9.4.3 如何建立动态链表建立动态链表 234
9.4.4 如何输出链表 输出链表 236
9.4.A 链表数据的处理:对链表进行排序和查找 237
9.4.B 链表数据的处理:查找结点 241
9.4.C 释放一个链表 245
9.5 共用体类型的定义和使用共用体类型 245
9.5.1—9.5.3关于这三小节的特别说明 247
9.6 什么是枚举类型使用枚举类型 247
9.7 数据类型也可以有个更好记更好用的绰号——用typedef声明新的数据类型用typedef声明新类型名 249
第10章 文件的输入与输出对文件的输入输出 250
10.1 在C中文件的概念是怎样的C文件的有关基本知识 250
10.1.1—10.1.5关于这五小节的特别说明 251
10.1A C语言所处理的文件类型 251
10.2 如何打开与关闭文件打开与关闭文件 252
10.2.1 使用fopen函数打开数据文件及注意事项用fopen函数打开数据文件 252
10.2.1A 用freopen()重定向标准输入输出流 253
10.2.2 使用fclose函数关闭数据文件及注意事项用fclose函数关闭数据文件 255
10.3 对数据文件进行顺序读写顺序读写数据文件 255
10.3.1—10.3.2怎样向文件读写字符和字符串 255
10.3.3 使用函数来进行数据文件的格式化读写用格式化的方式读写文件 258
10.3.4 二进制方式的文件读写——读写一张图片用二进制方式向文件读写一组数据 258
10.3.A 文件读写的“三大纪律” 263
10.4 在任意位置读写数据文件随机读写数据文件 264
10.4.1—10.4.2关于这两小节的特别说明 268
10.5—10.5A扩展:访问文件的各种属性 268
10.5A.A如何判断文件是否存在 268
10.5A.B如何获得文件的日期和大小 270
第A章 程序是如何炼成的 272
A.A 问题的提出——统计网页中的词频 272
A.B 自顶向下:分析问题,划分模块 272
A.B.A 分析数据输入模块 273
A.B.B 分析数据处理模块 273
A.B.C 分析数据输出模块 275
A.C 逐步求精:用函数实现各个模块 275
A.C.A 实现数据输入模块 275
A.C.B 实现数据处理模块 277
A.C.C 组装实现数据预处理模块 280
A.C.D 实现计算词频模块 283
A.C.E 实现文件排序模块 285
A.C.F 实现数据输出模块 286
A.C.G打扫战场:释放动态申请的内存 287
A.D 百炼成钢:如何调试我们的程序 288
A.E 程序就是这样炼成的 291
第B章 接下来我该…… 292
B.A 接下来要读的书 292
B.A.A提升对C语言的理解和掌握 292
B.A.B 做一个有思想的程序员 294
猜您喜欢