当前位置首页 > 百科> 正文

C语言开发技术详解

2019-09-12 02:03:56 百科
C语言开发技术详解

C语言开发技术详解

《C语言开发技术详解》是2009年电子工业出版社出版的书籍,作者是戴建华。

基本介绍

  • 书名:C语言开发技术详解
  • 作者:戴建华 等
  • ISBN:9787121084904
  • 类别:计算机,编程,C语言
  • 页数:576页
  • 定价:66.00元(含光碟1张)
  • 出版社:电子工业出版社
  • 出版时间:2009年5月1日

宣传语

该书特色:
从入门到精通:上篇介绍C语言基础,下篇介绍了C语言的高级程式设计技巧。
适用双作业系统:Windows+Linux环境。
循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。
实例丰富,讲解详细:386个实例,方便读者理解相应的知识点。

前言

C语言从产生到现在,已经成为最重要和最流行的程式语言之一。《C语言开发技术详解》分上下两篇,分别介绍了C语言的基础和高级程式设计技巧。该书内容丰富、结构清晰、实例代码讲解详尽,可以作为C语言、Java语言初学者的入门教材,也可作为C程式设计师的参考手册,同时,还可作为大中专院校学生及电脑培训班的参考书。
引子:C语言作为一门最通用的语言,在过去很流行,将来依然会如此。几乎每一个理工科或者其他专业的学生毫不例外地要学习它。记得大学里,很多学校都把谭浩强教授的《C程式设计》作为入门教材,这是绝佳的选择。然而,要更进一步,更全面而深入地学习呢?显然有点力不从心。本书正是为了弥补这个缺憾而写的,希望能对想比较全面而深入学习C语言程式设计的人有所帮助。
从C语言产生到现在,它已经成为最重要和最流行的程式语言之一。在各种流行程式语言中,都能看到C语言的影子,如Java的语法与C语言基本相同。学习、掌握C语言是每一个计算机技术人员的基本功之一。
C语言具有高级语言的强大功能,却又有很多直接操作计算机硬体的功能(这些都是彙编语言的功能),因此,C语言通常又被称为中级语言。学习和掌握C语言,既可以增进对于计算机底层工作机制的了解,又为进一步学习其他高级语言打下了坚实的基础。
本书特点
从入门到精通:本书分上下两篇,上篇针对初学者,从C语言的基础开始,使略有计算机基础的人都能容易地学会C语言编程。下篇则介绍了C语言的高级程式设计技巧,包括常用算法、底层控制滑鼠、绘图、加密、压缩等套用。
适用多种作业系统:本书实例都通过GCC编译器调试,读者不仅可在Windows环境下使用本书学习C语言,也可在Linux环境下使用本书学习C语言。
循序渐进:本书编写顺序按C语言的知识点循序渐进地介绍。例如,先介绍数据的存储,再介绍数据的输入/输出;先介绍简单的程式设计概念,再介绍指针等C语言的难点。
重点突出:指针是C语言的重点和难点,本书用了大量的篇幅,从不同方面对其进行讲解,并列举了大量的实例,帮助读者理解并掌握指针。
实例丰富,讲解详细:学习程式设计时,必须要多上机操作。本书对每个知识点都配有实例代码,并对实例代码进行了详细地讲解,在实例后,一般都附有实例程式的运行结果,方便读者对比理解相应的知识点。
注重实用:在本书下篇,详细介绍了数据加密、压缩、控制滑鼠、绘制图形等实用程式。通过这些内容,可进一步提高读者C语言的套用能力。
实用超值的DVD光碟:为帮助读者更深入地学习,本书附赠DVD光碟1张,内容包括本书所有的章节实例,入门视频以及长达21小时的C语言学习视频教学课件,讲解关键知识点界面操作,手把手教会读者使用。
本书内容
本书分上下两篇,共26章,上篇共16章,主要介绍C语言的语法基础;下篇共10章,主要介绍C语言的高级程式设计。各章内容如下:
第1章为C语言概述,介绍了C语言的发展、特点,C语言程式的开发过程,最后,以一个简单的C程式,演示了编写C语言程式的方法。
第2章介绍了一个完整的C程式各部分的含义。
第3章介绍了C语言几种常见的开发环境,包括Dev-C++、Visual C++、Linux下C语言开发环境的使用等内容。
第4章介绍了C语言数据的表示方法,包括数据的存储、常量、变数、整数类型、字元类型、实数类型、混合运算及类型转换、C99新增数据类型等内容。
第5章详细介绍C语言中的表达式、各种运算符及运算优先权、C语言各类语句等内容。
第6章介绍了格式化输入/输出函式的使用,包括printf函式、scanf函式、getchar函式、getch函式、gets函式、putch函式、puts函式等的使用。
第7章介绍C语言分支结构程式设计的方法,包括使用if语句、嵌套if语句、if else if语句、switch语句等进行多种分支程式设计的内容。
第8章介绍C语言循环结构程式设计的方法,包括使用编写while循环、for循环,以及循环嵌套等内容。
第9章介绍在C语言中使用数组的方法,主要介绍了一维数组、二维数组、字元数组和字元串的使用。
第10章介绍在C语言中创建和使用函式的方法,包括函式的概念、编写函式、设定函式的参数、函式调用、递归函式的编写等内容。
第11章介绍模组化程式设计方法,包括模组化程式设计概念、C程式的组织、变数的作用域、变数的存储类型等内容。
第12章介绍C语言中指针的使用,指针是C语言最显着的特徵。本章首先介绍变数在记忆体中的保存形式,然后介绍了指针和简单变数、指针和数组、指向多维数组的指针、指针和字元串、指针数组、指针和函式等内容。
第13章介绍结构、联合和枚举,包括结构的概念、结构的嵌套、结构数组、结构指针、向函式传递结构、联合、枚举等内容。
第14章介绍位运算和位域的使用,通过位运算符,可以方便地操作二进制位。
第15章介绍档案输入/输出的方法,主要介绍了数据流的概念、档案的打开与关闭、从档案中读写字元、从档案中读写字元串、二进制档案的读写、档案检测函式、档案的随机读写、管理缓冲区、输入/输出的重定向、档案管理等内容。
第16章介绍编译预处理,包括宏定义命令、条件编译、其他预处理命令、内联函式等内容。
第17章介绍处理字元串的方法,包括字元串的存储、字元和字元串检测函式、查找字元串、比较字元串、连线字元串、複製字元串、字元和字元串的转换等内容。
第18章介绍C语言的数学函式和时间函式,使用这些函式,可方便地处理数值、日期时间等类型的数据。
第19章介绍常用算法的C语言程式,包括用C语言编写的完成排序、查找、伫列、堆叠、鍊表等程式。
第20章介绍用C语言进行存储管理的方法,包括记忆体动态分配和回收等内容。
第21章介绍用C语言编写滑鼠的底层操作函式,包括初始化滑鼠、复位滑鼠、显示滑鼠指针、隐藏滑鼠指针、获取按钮信息等操作滑鼠的底层函式。
第22章介绍用C语言编写数据加密程式的方法,如换位加密法、替换加密法、位加密法等程式的编写,最后,还简单介绍了MD5算法。
第23章介绍用C语言编写数据压缩程式的方法,首先,介绍了数据压缩基础,最后,详细介绍了LZW压缩算法的原理及实现过程。
第24章介绍C语言底层图形函式的编程,首先介绍了显示系统的基本概念,然后介绍了直接读取显存编写图形函式的方法,在此基础上,完成绘製线、圆、矩形、多边形等函式,最后还介绍了编辑图形的方法。
第25章介绍GCC调用彙编程式的方法,包括AT&T彙编简介、GCC内嵌彙编、调用彙编程式等内容。
第26章为一个用C语言编写的信息管理系统——员工管理系统,通过该实例程式的编写,可巩固本书前面各章所学内容。
读者对象
程式设计初学者入门
大中院校学生
大中院校教师
C程式设计师
电脑培训班
计算机爱好者
由于计算机技术发展很快,且编者水平和学识有限,书中难免有疏漏之处,敬请广大读者朋友批评指正,并多提出宝贵意见。
编 者

目录

第1篇 C语言基础
第1章 C语言概述 2
1.1 C语言发展历史 2
1.1.1 C语言发展过程 2
1.1.2 C语言标準 3
1.2 C语言的特点 4
1.2.1 简洁紧凑 4
1.2.2 灵活高效 4
1.2.3 强大的控制结构 5
1.2.4 可移植性 5
1.2.5 C语言的缺点 5
1.2.6 C与C++的关係 6
1.3 C语言程式开发过程 6
1.3.1 定义程式目标 6
1.3.2 设计程式 6
1.3.3 编写原始码 7
1.3.4 编译和连结 7
1.3.5 测试 8
1.3.6 维护和修改 8
1.3.7 总结 8
1.4 创建第一个C程式 9
1.4.1 C程式结构 9
1.4.2 输入程式代码 9
1.4.3 编译连结程式 10
1.4.4 调试程式 11
1.4.5 程式语句的含义 12
第2章 C程式的组成 13
2.1 一个完整的C程式 13
2.1.1 分析程式目标 13
2.1.2 设计程式 13
2.1.3 编写代码 14
2.1.4 编译运行程式 15
2.2 C程式的组成 16
2.2.1 包含指令 16
2.2.2 定义常量 16
2.2.3 声明函式原型 17
2.2.4 main函式 17
2.2.5 程式语句 17
2.2.6 函式定义 18
2.2.7 注释 18
2.3 C程式组成总结 19
第3章 C语言开发环境 20
3.1 C语言开发环境简介 20
3.1.1 C语言开发环境的组成 20
3.1.2 常用开发环境 20
3.2 使用Dev-C++ 22
3.2.1 Dev-C++操作界面 22
3.2.2 设定选项 22
3.2.3 用Dev-C++创建C程式 23
3.2.4 编译程式 24
3.2.5 运行Dev-C++编译的程式 25
3.3 使用Visual C++ 26
3.3.1 Visual C++操作界面 27
3.3.2 用Visual C++创建C程式 27
3.3.3 编译程式 29
3.3.4 运行Visual C++生成的程式 30
3.4 Linux C语言开发环境 31
3.4.1 Linux C语言开发环境的构成 31
3.4.2 代码编辑器 31
3.4.3 GCC编译器 33
3.4.4 在emacs中编译C程式 33
3.4.5 在Linux中编写C程式 34
第4章 数据的表示 37
4.1 数据的存储 37
4.1.1 记忆体单元 37
4.1.2 字元的存储 38
4.1.3 数值的存储 38
4.2 数据类型简介 39
4.3 常量 40
4.3.1 直接常量 40
4.3.2 符号常量 40
4.4 变数 42
4.4.1 标识符 42
4.4.2 声明变数 43
4.4.3 变数初始化 45
4.5 整数类型 45
4.5.1 整数类型及存储 45
4.5.2 整型常量的表示 48
4.5.3 整型数据输出 50
4.6 字元类型 53
4.6.1 字元常量 53
4.6.2 字元变数及初始化 53
4.6.3 转义字元 54
4.6.4 字元型数据的输出 55
4.7 实数类型 56
4.7.1 实数类型及存储 56
4.7.2 实型常量的表示 58
4.7.3 实型变数 59
4.7.4 实型数据输出 60
4.8 混合运算及类型转换 61
4.8.1 混合运算 61
4.8.2 强制数据类型转换 63
4.9 C99新增数据类型 64
4.9.1 逻辑型(_Bool) 64
4.9.2 複数类型(_Complex和_Imaginary) 64
4.10 总结 65
第5章 表达式、运算符和语句 66
5.1 表达式 66
5.1.1 简单表达式 66
5.1.2 逗号表达式 66
5.2 运算符 67
5.2.1 运算符概述 68
5.2.2 算术运算符 68
5.2.3 赋值运算符 73
5.2.4 关係运算符 75
5.2.5 逻辑运算符 76
5.2.6 位运算符 78
5.2.7 条件运算符 78
5.2.8 其他运算符 80
5.3 表达式的运算顺序 81
5.3.1 运算符优先权 81
5.3.2 运算符的结合性 82
5.3.3 自增自减运算符注意事项 83
5.4 语句 84
5.4.1 语句书写方式 84
5.4.2 表达式语句 85
5.4.3 空语句 86
5.4.4 複合语句 86
5.4.5 标号语句 87
第6章 格式化输出/输入 88
6.1 格式化输出——printf函式 88
6.1.1 printf函式的格式 88
6.1.2 printf的格式字元 89
6.1.3 修饰符 91
6.1.4 printf函式实例 93
6.1.5 动态设定输出宽度和精度 98
6.1.6 printf函式的返回值 99
6.1.7 理解输出列表 99
6.2 格式化输入——scanf函式 102
6.2.1 scanf函式的格式 102
6.2.2 scanf函式格式字元串 103
6.2.3 scanf函式注意问题 105
6.2.4 scanf函式的返回值 107
6.3 其他常用输入/输出函式 107
6.3.1 getchar函式 108
6.3.2 getch函式 108
6.3.3 gets函式 109
6.3.4 putch函式 110
6.3.5 puts函式 110
第7章 分支结构程式设计 112
7.1 分支程式流程 112
7.2 if语句 113
7.2.1 基本if语句 113
7.2.2 if else语句 116
7.2.3 再论条件表达式 117
7.3 嵌套if语句 117
7.3.1 嵌套if语句的形式 117
7.3.2 if语句嵌套实例 118
7.4 if else if语句 122
7.4.1 if else if语句格式 122
7.4.2 if else if实例 123
7.5 多路分支——switch 123
7.5.1 switch语句格式 123
7.5.2 switch实例 125
7.5.3 使用多重标号 126
7.5.4 switch和if比较 129
第8章 循环结构程式设计 130
8.1 循环结构的程式流程 130
8.2 while循环 131
8.2.1 while语句格式 131
8.2.2 理解循环条件 134
8.2.3 理解循环体 135
8.2.4 while循环需注意的问题 137
8.3 for循环 137
8.3.1 for语句格式 138
8.3.2 for语句的各种样式 139
8.3.3 for语句实例 142
8.4 do while语句 144
8.4.1 while语句不足 144
8.4.2 do while语句格式 146
8.5 循环嵌套 147
8.5.1 了解循环嵌套 147
8.5.2 循环嵌套的结构 149
8.5.3 循环嵌套实例 150
8.6 break和continue语句 154
8.6.1 break语句 154
8.6.2 continue语句 155
8.7 goto语句 157
第9章 使用数组 159
9.1 了解数组 159
9.1.1 使用数组的好处 159
9.1.2 数组的概念 160
9.1.3 数组的维数 161
9.2 一维数组 162
9.2.1 一维数组的声明 162
9.2.2 一维数组的存储 164
9.2.3 引用一维数组 165
9.2.4 一维数组的初始化 167
9.3 二维数组 168
9.3.1 二维数组的声明 169
9.3.2 二维数组的存储 169
9.3.3 二维数组的初始化 173
9.4 字元数组和字元串 174
9.4.1 字元数组 174
9.4.2 了解字元串 175
9.4.3 字元串的输入输出 177
9.5 数组的实例 178
9.5.1 字元串反转 178
9.5.2 查找最大数 179
9.5.3 数据排序 180
第10章 使用函式 183
10.1 函式的概念 183
10.1.1 函式概念 183
10.1.2 函式的分类 184
10.1.3 定义函式 185
10.1.4 main函式 186
10.2 函式的工作过程 187
10.2.1 程式结构 187
10.2.2 函式执行过程 187
10.3 编写函式 188
10.3.1 函式头 188
10.3.2 返回类型 189
10.3.3 参数列表 189
10.3.4 函式体 190
10.3.5 函式原型 190
10.4 函式的参数 192
10.4.1 参数传递过程 192
10.4.2 值调用 192
10.4.3 引用调用 194
10.4.4 数组调用 196
10.4.5 main的参数 198
10.5 函式调用 200
10.5.1 函式调用方式 201
10.5.2 被调函式的说明 201
10.5.3 返回函式结果 203
10.5.4 函式的嵌套调用 204
10.6 递归函式 205
10.6.1 函式的递归调用 205
10.6.2 递归的基本原理 207
10.6.3 递归函式设计 208
10.6.4 递归的优缺点 210
第11章 模组化程式设计方法 211
11.1 模组化程式设计概念 211
11.2 程式模组结构 212
11.2.1 C程式的组织 212
11.2.2 多档案模组的编译连结 213
11.2.3 档案包含 215
11.2.4 内部函式与外部函式 216
11.3 变数的作用域 217
11.3.1 局部变数 217
11.3.2 在複合语句中的变数 218
11.3.3 全局变数 219
11.3.4 全局变数和局部变数同名 222
11.4 变数的存储类型 223
11.4.1 了解存储类型 223
11.4.2 自动变数 224
11.4.3 暂存器变数 225
11.4.4 外部变数 226
11.4.5 静态变数 227
11.5 函式、档案、变数的关係 229
第12章 使用指针 230
12.1 记忆体和变数 230
12.1.1 计算机记忆体 230
12.1.2 变数的存储 231
12.2 指针和简单变数 232
12.2.1 指针的概念 232
12.2.2 创建指针 233
12.2.3 初始化指针 234
12.2.4 使用指针 235
12.2.5 给函式传递指针 238
12.3 指针和数组 239
12.3.1 指针、数组和地址间的关係 239
12.3.2 指针运算 241
12.3.3 用指针运算元组元素 242
12.4 指向多维数组的指针 245
12.4.1 理解二维数组的地址 245
12.4.2 多维数组的指针表示 247
12.4.3 指向多维数组的指针变数 248
12.4.4 数组名作为函式的参数 252
12.4.5 指向数组的指针小结 255
12.5 指针和字元串 256
12.5.1 字元串的指针表示 256
12.5.2 字元串指针作函式参数 258
12.5.3 字元数组和字元指针的区别 259
12.6 指针数组 260
12.6.1 指针数组的概念 261
12.6.2 用指针数组处理字元串 263
12.6.3 指针数组作函式参数 264
12.7 指向指针的指针 266
12.7.1 理解指向指针的指针 266
12.7.2 二级指针变数与数组 268
12.8 指针和函式 272
12.8.1 返回指针的函式 272
12.8.2 指向函式的指针 274
12.9 指针和const 276
12.9.1 用const控制指针 277
12.9.2 const的几种特殊用法 277
12.10 指针总结 278
12.10.1 明确分辨各种指针类型 278
12.10.2 理解指针的4项内容 279
第13章 结构、联合和枚举 280
13.1 结构的概念 280
13.1.1 定义结构类型 280
13.1.2 定义结构变数 281
13.1.3 使用结构变数 282
13.2 结构的嵌套 284
13.2.1 包含数组的结构 284
13.2.2 包含指针的结构 285
13.2.3 包含结构的结构 285
13.3 初始化结构变数 288
13.4 结构数组 289
13.4.1 结构数组的定义和引用 290
13.4.2 结构数组的初始化 291
13.4.3 结构数组实例 291
13.5 结构指针 292
13.5.1 定义结构指针 292
13.5.2 使用结构指针 293
13.5.3 用指针处理结构数组 294
13.6 向函式传递结构 295
13.6.1 传递结构变数的值 295
13.6.2 传递结构指针到函式 296
13.7 联合 297
13.7.1 定义联合类型 297
13.7.2 使用联合变数 298
13.7.3 在结构中嵌套联合类型 298
13.8 枚举 300
13.8.1 定义枚举类型 300
13.8.2 使用枚举变数 301
13.9 使用typedef 301
第14章 位运算和位域 303
14.1 了解二进制数 303
14.1.1 数据的存储 303
14.1.2 整数的二进制表示 304
14.1.3 实数的二进制表示 305
14.1.4 使用其他进制 305
14.2 位运算 307
14.2.1 位逻辑运算符 307
14.2.2 移位运算符 309
14.2.3 位运算的複合赋值运算符 310
14.2.4 位运算的用途 310
14.3 位域 311
14.3.1 定义位域结构 311
14.3.2 位域的使用 312
14.3.3 位域与联合的使用 314
第15章 档案输入/输出 316
15.1 档案与数据流 316
15.1.1 程式的输入/输出概念 316
15.1.2 流的概念 316
15.1.3 预定义的流 317
15.1.4 档案的基本概念 317
15.1.5 缓冲档案系统 318
15.2 档案的打开与关闭 318
15.2.1 档案指针 319
15.2.2 打开档案函式——fopen 319
15.2.3 关闭档案函式——fclose 321
15.3 从档案中读写字元 322
15.3.1 写字元函式——putc和fputc 322
15.3.2 读字元函式——getc和fgetc 323
15.3.3 合併档案 325
15.4 从档案中读写字元串 326
15.4.1 写字元串函式——fputs 326
15.4.2 读字元串函式——fgets 327
15.4.3 档案格式输出函式——fprintf 328
15.4.4 档案格式输入函式——fscanf 330
15.5 二进制档案的读写 332
15.5.1 写入整型数据函式——putw 332
15.5.2 读取整型数据函式——getw 333
15.5.3 写数据块函式——fwrite 333
15.5.4 读数据块函式——fread 335
15.5.5 档案检测函式 337
15.6 档案的随机读写 337
15.6.1 获取当前位置函式——ftell 337
15.6.2 重置档案位置指针函式——rewind 339
15.6.3 设定档案位置指针——fseek函式 340
15.7 管理缓冲区 342
15.8 输入/输出的重定向 343
15.8.1 作业系统的重定向功能 344
15.8.2 重定向输出 344
15.8.3 重定向函式——freopen 345
15.9 档案管理 346
15.9.1 重命名档案 346
15.9.2 删除档案 347
15.9.3 複製档案 348
15.9.4 创建临时档案 349
第16章 预处理 351
16.1 预处理简介 351
16.1.1 预处理功能 351
16.1.2 预处理命令 351
16.2 宏定义命令——#define 352
16.2.1 无参数的宏 352
16.2.2 带参数的宏 354
16.2.3 预处理操作符#和## 355
16.3 条件编译 357
16.3.1 使用#if 357
16.3.2 使用#ifdef和#ifndef 359
16.3.3 使用#defined和#undef 360
16.4 其他预处理命令 361
16.4.1 预定义的宏名 361
16.4.2 重置行号和档案名称命令——#line 361
16.4.3 修改编译器设定命令——#pragma 362
16.4.4 产生错误信息命令——#error 362
16.5 内联函式 362
第2篇 C语言高级程式设计
第17章 处理字元串 365
17.1 字元串的存储 365
17.1.1 字元串的静态存储 365
17.1.2 字元串的动态存储 366
17.2 字元和字元串检测函式 368
17.2.1 字元检测函式简介 368
17.2.2 检测字元串长度函式——strlen 369
17.3 查找字元串 370
17.3.1 查找字元位置——strchr 370
17.3.2 查找相同字元——strspn 372
17.3.3 查找包含字元位置——strcspn 372
17.3.4 查找包含字元——strpbrk 373
17.3.5 查找子串——strstr 375
17.4 比较字元串 376
17.4.1 比较字元串——strcmp 376
17.4.2 比较部分字元串——memcmp 377
17.4.3 比较时忽略大小写——stricmp 379
17.5 连线字元串 380
17.5.1 连线字元串——strcat 380
17.5.2 连线部分字元——strncat 382
17.6 複製字元串 383
17.6.1 複製字元串——strcpy 383
17.6.2 複製部分字元——strncpy 384
17.6.3 更省事的複製函式——strdup 385
17.7 字元和字元串的转换 386
17.7.1 大小写字元的转换 386
17.7.2 转换大小写字元串 387
17.7.3 字元串与数值的转换 388
17.8 其他字元串函式 389
17.8.1 字元串反转——strrev 389
17.8.2 替换字元串中的字元——strset 390
17.8.3 分解字元串——strtok 391
第18章 数学函式和时间函式 393
18.1 数学函式 393
18.1.1 三角函式 393
18.1.2 双曲三角函式 394
18.1.3 指数函式和对数函式 395
18.1.4 其他数学函式 398
18.2 日期时间函式 399
18.2.1 表示日期时间的数据结构 399
18.2.2 获取日期时间 400
18.2.3 转换日期时间的表示形式 401
18.2.4 格式化日期时间 404
第19章 常用算法套用 408
19.1 排序 408
19.1.1 排序概述 408
19.1.2 冒泡排序法 409
19.1.3 选择排序法 410
19.1.4 插入排序法 411
19.1.5 Shell排序法 412
19.1.6 快速排序法 413
19.1.7 字元串的排序 414
19.2 查找 416
19.2.1 顺序查找 416
19.2.2 折半查找 417
19.3 伫列 418
19.3.1 伫列的概念 418
19.3.2 伫列的操作 419
19.4 堆叠 422
19.4.1 堆叠的概念 422
19.4.2 堆叠的实现 422
19.5 鍊表 424
19.5.1 鍊表的概念 424
19.5.2 鍊表的基本操作 425
19.5.3 测试鍊表的功能 430
第20章 存储管理 432
20.1 记忆体组织方式 432
20.1.1 记忆体组织方式 432
20.1.2 堆和栈的比较 433
20.2 C语言的动态存储管理 434
20.2.1 分配记忆体函式——malloc 434
20.2.2 另一个分配记忆体的函式——calloc 436
20.2.3 调整已分配记忆体——realloc 437
20.2.4 释放分配的记忆体——free 439
20.2.5 丢失的记忆体 440
第21章 控制滑鼠 442
21.1 滑鼠驱动程式 442
21.1.1 通过中断访问滑鼠驱动程式 442
21.1.2 新的开发环境 443
21.1.3 调用中断服务 444
21.2 滑鼠库函式 445
21.2.1 定义头档案mouse.h 445
21.2.2 通过中断控制滑鼠 446
21.2.3 初始化滑鼠 447
21.2.4 复位滑鼠 447
21.2.5 移动滑鼠 448
21.2.6 显示滑鼠指针 448
21.2.7 隐藏滑鼠指针 449
21.2.8 获取按下按钮信息 449
21.2.9 获取释放按钮信息 450
21.2.10 获取滑鼠状态信息 451
21.2.11 获取滑鼠指针位置信息 451
21.2.12 保存滑鼠指针位置 452
21.2.13 捕获键盘或滑鼠 452
21.2.14 滑鼠指针区域 453
21.3 滑鼠套用实例 454
21.3.1 了解萤幕函式 454
21.3.2 实例程式 455
第22章 数据加密 458
22.1 密码技术的概念 458
22.2 加密方法 458
22.2.1 换位加密法 459
22.2.2 替换加密法 462
22.2.3 位加密法 464
22.3 MD5加密简介 466
22.3.1 MD5简介 466
22.3.2 MD5算法描述 467
第23章 数据压缩 469
23.1 数据压缩基础 469
23.1.1 数据压缩概述 469
23.1.2 数据压缩相关概念 469
23.1.3 常见压缩算法简介 470
23.2 LZW原理 471
23.2.1 LZW的相关概念 471
23.2.2 LZW压缩过程 471
23.2.3 LZW解压缩过程 473
23.3 LZW实现代码 473
23.3.1 程式构思 473
23.3.2 定义数据结构 474
23.3.3 压缩函式 474
23.3.4 搜寻哈希表 476
23.3.5 输出压缩数据 477
23.3.6 解压缩函式 478
23.3.7 输入编码数据 480
23.3.8 解码函式 480
23.3.9 主程式 481
第24章 图形编程 483
24.1 显示系统简介 483
24.1.1 显示系统基本概念 483
24.1.2 显示卡种类 484
24.1.3 显示模式 484
24.2 绘图基础 486
24.2.1 设定显示模式 486
24.2.2 控制显示缓冲区 487
24.3 图形函式 488
24.3.1 绘製点 488
24.3.2 读取点的信息 489
24.3.3 绘製直线 489
24.3.4 绘製矩形 491
24.3.5 绘製圆 492
24.3.6 绘製多边形 493
24.4 编辑图形 494
24.4.1 複制图形 494
24.4.2 移动图形 495
24.4.3 保存图形 495
24.4.4 载入图形 496
第25章 调用彙编程式 498
25.1 AT&T彙编简介 498
25.1.1 了解彙编的两种格式 498
25.1.2 将C语言输出为彙编程式 500
25.2 GCC内嵌彙编 501
25.2.1 基本内联彙编 501
25.2.2 扩展内联彙编 501
25.2.3 内联彙编实例 505
25.3 调用彙编程式 507
25.3.1 C编译程式的调用约定 507
25.3.2 C语言调用彙编的结构 508
25.3.3 建立彙编函式的框架 509
25.3.4 调用彙编函式 510
第26章 程式设计实例 512
26.1 程式分析 512
26.1.1 模组划分 512
26.1.2 设计数据结构 513
26.2 头档案 514
26.3 主模组 515
26.3.1 main函式 515
26.3.2 检查初始化状态 516
26.3.3 检查登录密码 517
26.3.4 从档案创建鍊表 518
26.3.5 显示主选单 519
26.3.6 将鍊表保存到档案 522
26.4 输入员工信息 523
26.5 查询员工信息 525
26.5.1 查询子选单 525
26.5.2 查询函式 527
26.5.3 通用显示函式 528
26.6 显示员工信息 529
26.7 修改员工信息 530
26.7.1 修改子选单 530
26.7.2 修改数据 532
26.8 删除员工信息 533
26.9 统计员工信息 535
26.10 重设系统密码 535
附录A ASCII关键字 537
附录B ANSI C关键字 540
实例目录
【程式1-1】第一个C语言程式 9
【程式2-1】C语言程式组成示例 14
【程式3-1】欢迎程式 25
【程式4-1】符号常量示例 40
【程式4-2】摄氏温度转换为华氏温度 44
【程式4-3】整型数据所占记忆体空间的大小 46
【程式4-4】整型数据输出示例 51
【程式4-5】整数转换为十六进制和八进制示例 52
【程式4-6】使用转义字元示例 55
【程式4-7】字元型数据输出示例 56
【程式4-8】实数类型占用的位元组示例 57
【程式4-9】实型数据输出示例1 59
【程式4-10】实型数据输出示例2 60
【程式4-11】实型数据输出示例3 61
【程式4-12】char类型和int类型之间的转换示例 62
【程式4-13】将float转换为int类型示例 62
【程式4-14】强制类型转换示例 63
【程式4-15】複数操作示例 64
【程式5-1】输出逗号表达式的结果 67
【程式5-2】十进制数转换为二进制数示例(不使用循环) 69
【程式5-3】十进制数转换为二进制数示例(使用循环) 70
【程式5-4】自增运算符的后缀模式和前缀模式 71
【程式5-5】使用複合赋值运算符 75
【程式5-6】关係运算符示例 76
【程式5-7】逻辑运算符示例 77
【程式5-8】条件运算符示例 79
【程式5-9】使用sizeof运算符 80
【程式6-1】printf函式示例 89
【程式6-2】printf函式不同格式串输出示例 90
【程式6-3】printf函式输出最小宽度控制示例 91
【程式6-4】printf函式输出精度控制示例 92
【程式6-5】printf函式输出字元示例 94
【程式6-6】printf函式输出整数示例 95
【程式6-7】printf函式输出实数示例 96
【程式6-8】printf函式输出字元串示例 97
【程式6-9】printf函式动态设定输出宽度和精度示例 98
【程式6-10】printf函式的返回值示例 99
【程式6-11】printf函式输出列表示例1 100
【程式6-12】printf函式输出列表示例2 100
【程式6-13】scanf函式示例 102
【程式6-14】scanf函式不能控制输入精度示例 105
【程式6-15】scanf函式使用非格式字元示例 106
【程式6-16】scanf函式返回值示例 107
【程式6-17】getchar函式示例 108
【程式6-18】getch函式示例 109
【程式6-19】gets函式示例 109
【程式6-20】putch函式示例 110
【程式6-21】puts函式示例 111
【程式7-1】用if语句求最大数 114
【程式7-2】用if语句对两个数排序 115
【程式7-3】用if else语句对两个数排序 116
【程式7-4】检查输入字元类型示例(if语句嵌套) 119
【程式7-5】三个数排序示例(if语句嵌套方法) 120
【程式7-6】三个数排序示例(交换方法) 121
【程式7-7】检查输入字元类型示例(if else if语句) 123
【程式7-8】整数转换为中文星期名称(switch语句) 125
【程式7-9】switch语句多重标号示例(错误结果) 126
【程式7-10】分档计算运费(switch语句) 127
【程式8-1】求连续自然数之和示例(while语句,计数器递增) 132
【程式8-2】求连续自然数之和示例(while语句,计数器递减) 134
【程式8-3】求连续自然数之和示例(最佳化后的代码) 135
【程式8-4】求连续自然数之和示例(for语句) 139
【程式8-5】省略初始化部分的for循环示例 139
【程式8-6】改变for循环的循环变数递增方式示例 141
【程式8-7】用for循环输出指定期间的字元示例 142
【程式8-8】用for循环输出ASCII代码表示例 143
【程式8-9】用while循环显示选单示例 144
【程式8-10】用do while循环显示选单示例 146
【程式8-11】循环嵌套输出示例 148
【程式8-12】九九乘法表 150
【程式8-13】九九乘法表示例(最佳化后的代码) 151
【程式8-14】百钱买百鸡示例(循环嵌套) 152
【程式8-15】百钱买百鸡代码最佳化示例 153
【程式8-16】用break语句跳出循环示例 155
【程式8-17】用continue语句跳过循环部分语句示例 156
【程式8-18】用goto语句编写循环代码示例 157
【程式9-1】统计学生成绩示例(不使用数组) 159
【程式9-2】统计学生成绩示例(使用数组) 160
【程式9-3】使用变长数组示例(C99标準) 163
【程式9-4】越界访问数组示例 166
【程式9-5】输出未初始化的数组元素示例 167
【程式9-6】按线性方式输出二维数组元素示例 170
【程式9-7】输出数组各元素的记忆体地址示例 171
【程式9-8】字元数组示例 175
【程式9-9】输出字元数组示例 177
【程式9-10】字元串反转示例 179
【程式9-11】输出数组中的最大数示例 180
【程式9-12】数组元素排序示例 181
【程式10-1】求最大值函式示例 185
【程式10-2】函式返回值示例 189
【程式10-3】函式返回值示例 191
【程式10-4】函式的值调用示例 193
【程式10-5】函式的引用调用示例 194
【程式10-6】通过指针传递参数示例 195
【程式10-7】函式的数组调用示例 197
【程式10-8】main函式的参数示例 199
【程式10-9】输出用户输入的命令行参数示例 200
【程式10-10】函式嵌套调用示例 204
【程式10-11】函式递归调用示例 205
【程式10-12】汉诺塔(递归程式示例) 208
【程式11-1】引用多个源程式档案示例 213
【程式11-2】局部变数示例 217
【程式11-3】複合语句中的变数示例 219
【程式11-4】全局变数示例1 220
【程式11-5】全局变数示例2 221
【程式11-6】同名全局变数和局部变数示例 222
【程式11-7】自动变数示例 224
【程式11-8】暂存器变数示例 226
【程式11-9】外部变数示例 226
【程式11-10】静态变数示例 228
【程式12-1】查看变数地址示例 232
【程式12-2】错误初始化指针示例 235
【程式12-3】取地址运算符和取内容运算符示例 236
【程式12-4】用指针引用变数示例 237
【程式12-5】通过指针交换数据示例 237
【程式12-6】指针和数组地址之间的关係示例 240
【程式12-7】用指针操作数组元素示例 242
【程式12-8】将指针作为数组名使用示例 243
【程式12-9】输出数组的地址和长度示例 245
【程式12-10】输出数组各维的地址和长度示例 246
【程式12-11】输出数组各元素的地址和长度示例 247
【程式12-12】初始化二维数组示例 248
【程式12-13】用指针变数初始化二维数组示例 249
【程式12-14】用指针变数指向数组的一行数据示例 251
【程式12-15】一维数组作函式参数示例 253
【程式12-16】使用指向一维数组的指针变数传递参数示例 254
【程式12-17】字元串数组、字元串指针使用示例 257
【程式12-18】字元串指针作函式参数示例 258
【程式12-19】用指针数组指向二维数组每一行示例 261
【程式12-20】二维数组指针示例 262
【程式12-21】用指针数组处理字元串示例 263
【程式12-22】指针数组作函式参数示例 264
【程式12-23】指向指针的指针示例 267
【程式12-24】用二级指针操作一维数组示例 268
【程式12-25】用二级指针操作二维数组示例 270
【程式12-26】用二级指针作函式参数示例 271
【程式12-27】指针型函式示例 272
【程式12-28】指向函式的指针示例1 274
【程式12-29】指向函式的指针示例2 275
【程式12-30】指针和const的关係示例 278
【程式13-1】结构和结构变数示例 283
【程式13-2】嵌套结构成员赋值、输出示例 286
【程式13-3】初始化结构示例 289
【程式13-4】结构数组示例 291
【程式13-5】用指针处理结构数组示例 294
【程式13-6】传递结构变数的值到函式示例 295
【程式13-7】结构中嵌套联合类型示例1 298
【程式13-8】结构中嵌套联合类型示例2 299
【程式14-1】位或运算示例 308
【程式14-2】位反运算示例 308
【程式14-3】位运算用途示例 310
【程式14-4】位域示例 313
【程式14-5】二进制转换(位域与联合的使用)示例 314
【程式15-1】保存用户输入内容示例 322
【程式15-2】从档案中读取字元示例 324
【程式15-3】合併档案示例 325
【程式15-4】向档案中增加内容示例 326
【程式15-5】将档案内容显示到萤幕示例 328
【程式15-6】格式化档案数据示例 329
【程式15-7】读取格式化档案数据示例 330
【程式15-8】将整型数据写入档案示例 332
【程式15-9】从档案中读取整型数据示例 333
【程式15-10】保存二进制档案示例 334
【程式15-11】读二进制档案示例 336
【程式15-12】获取档案位置指针示例 338
【程式15-13】重置档案位置指针示例 339
【程式15-14】设定档案位置指针示例 341
【程式15-15】刷新标準输入流stdin缓冲区示例 343
【程式15-16】重定向输出到显示器示例 344
【程式15-17】重定向输出到档案示例 345
【程式15-18】重命名档案示例 346
【程式15-19】删除档案示例 347
【程式15-20】複製档案示例 348
【程式15-21】临时档案使用示例 349
【程式16-1】无参数宏示例 353
【程式16-2】操作符#示例 355
【程式16-3】操作符##示例 356
【程式16-4】条件编译示例 358
【程式16-5】条件编译嵌套示例 359
【程式16-6】使用预定宏名示例 361
【程式16-7】#line命令示例 361
【程式16-8】内联函式示例 363
【程式17-1】字元串动态存储示例 367
【程式17-2】字元检测函式示例 368
【程式17-3】字元串长度函式示例 369
【程式17-4】查找字元位置示例 370
【程式17-5】查找相同字元示例 372
【程式17-6】查找包含字元位置示例 373
【程式17-7】查找包含字元示例 374
【程式17-8】查找子串示例 375
【程式17-9】比较字元串示例 376
【程式17-10】比较部分字元串示例 378
【程式17-11】忽略大小写比较字元串示例 379
【程式17-12】连线字元串示例 381
【程式17-13】连线部分字元示例 382
【程式17-14】複製字元串示例 383
【程式17-15】複製部分字元示例 384
【程式17-16】用dup函式複製字元串示例 385
【程式17-17】大小写字元转换示例 386
【程式17-18】字元串大小写转换示例 387
【程式17-19】字元串与数值转换示例 388
【程式17-20】字元串反转示例 389
【程式17-21】替换字元示例 390
【程式17-22】分解字元串示例 391
【程式18-1】三角函式sin示例 394
【程式18-2】双三曲函式示例 395
【程式18-3】exp函式示例 396
【程式18-4】用frexp函式分解尾数和指数示例 396
【程式18-5】用ldexp函式组合实数示例 397
【程式18-6】ceil和floor函式示例 398
【程式18-7】modf函式示例 399
【程式18-8】获取日期时间示例 400
【程式18-9】转换日期时间表示形式示例 401
【程式18-10】秒数转换为对应的日期示例 402
【程式18-11】日期转换为秒数示例 403
【程式18-12】日期转换为字元串示例 404
【程式18-13】显示当前日期示例 407
【程式19-1】冒泡排序法示例 409
【程式19-2】选择排序法示例 411
【程式19-3】插入排序法示例 411
【程式19-4】Shell排序法示例 412
【程式19-5】快速排序法示例 413
【程式19-6】字元串排序示例 414
【程式19-7】顺序查找示例 416
【程式19-8】折半查找示例 418
【程式19-9】伫列操作示例 419
【程式19-10】堆叠操作示例 423
【程式19-11】鍊表操作示例 425
【程式20-1】不同类变数分配记忆体空间示例 433
【程式20-2】用malloc函式动态分配记忆体创建动态数组示例 435
【程式20-3】用realloc函式动态分配记忆体示例 437
【程式20-4】用free函式释放分配记忆体示例 439
【程式20-5】记忆体分配丢失示例 440
【程式20-6】分配所有可用记忆体示例 441
【程式21-1】头档案,包含控制滑鼠的函式原型定义 445
【程式21-2】控制滑鼠的函式代码 446
【程式21-3】初始化滑鼠函式代码 447
【程式21-4】复位滑鼠函式代码 447
【程式21-5】移动滑鼠函式代码 448
【程式21-6】显示滑鼠指针函式代码 448
【程式21-7】隐藏滑鼠指针函式代码 449
【程式21-8】获取按下按钮信息函式代码 450
【程式21-9】获取释放按钮信息函式代码 450
【程式21-10】获取滑鼠状态信息函式代码 451
【程式21-11】获取滑鼠指针位置信息函式代码 451
【程式21-12】保存滑鼠指针位置函式代码 452
【程式21-13】捕获滑鼠或键盘按钮函式代码 453
【程式21-14】判断滑鼠指针区域代码 454
【程式21-15】测试滑鼠库函式的代码 455
【程式22-1】换位加密法示例 459
【程式22-2】替换加密法示例 463
【程式22-3】位加密法示例 465
【程式23-1】LZW压缩算法头档案 474
【程式23-2】压缩函式代码 475
【程式23-3】搜寻哈希表函式代码 477
【程式23-4】输出压缩数据函式代码 477
【程式23-5】解压缩函式代码 478
【程式23-6】输入编辑数据函式代码 480
【程式23-7】解压函式代码 480
【程式23-8】压缩主程式代码 481
【程式24-1】设定显示模式函式代码 486
【程式24-2】绘製点的函式代码(调用BIOS功能) 488
【程式24-3】绘製点的函式代码(直接存取显示记忆体) 489
【程式24-4】读取点信息的函式代码 489
【程式24-5】绘製直线的函式代码 490
【程式24-6】绘製矩形的函式代码 491
【程式24-7】绘製实心矩形的函式代码 491
【程式24-8】绘製圆的函式代码 492
【程式24-9】绘製实心圆的函式代码 493
【程式24-10】绘製多边形的函式代码 493
【程式24-11】绘製随机多边形的代码 494
【程式24-12】複制图形的函式代码 494
【程式24-13】移动图形的函式代码 495
【程式24-14】保存图形的函式代码 495
【程式24-15】载入图形的函式代码 496
【程式24-16】测试绘製函式的代码 497
【程式25-1】将C语言编译为彙编程式示例(C源程式) 500
【程式25-2】将C语言编译为彙编程式示例(彙编程式) 500
【程式25-3】简单内联彙编示例 503
【程式25-4】包含输入部分的内联彙编示例 504
【程式25-5】输出字元串的内联彙编示例 505
【程式25-6】读取暂存器值的内联彙编示例 506
【程式25-7】C语言函式调用约定示例 507
【程式25-8】add函式(C源程式) 508
【程式25-9】add函式编译后的彙编程式 508
【程式25-10】两数相乘的彙编程式示例 509
【程式25-11】C语言调用彙编程式示例 510
声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:baisebaisebaise@yeah.net