首页>参考读物>计算机科学与技术>软件与程序设计

C语言解惑:指针、数组、函数和多文件编程
作者 : 刘振安 刘燕君 编著
出版日期 : 2016-12-22
ISBN : 978-7-111-55406-6
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 453
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书面向已经了解C语言基础知识的读者,集中讨论C语言的核心部分—函数的设计。这将涉及指针、数组、函数和多文件编程等知识,最后落脚在如何实现C语言的结构化程序设计,并给出完整的设计实例。

图书特色

以C语言中的函数设计作为全书主线,串联与之相关的指针、数组、函数、多文件编程等难点,通过实际问题案例帮助读者克服编程中这些难于掌握的概念和技术。
以“解惑”作为编写宗旨,启迪读者的编程思维方式,帮助读者快速进化为编程高手。

在C语言的使用中,函数设计是一项核心而颇具难度的工作。函数设计工作涉及函数类型、函数参数及返回值,这就要求程序员熟练掌握指针和数组的知识,此外还要掌握多文件编程以及多文件之间的参数传递等知识。本书面向已经具备C语言基础知识的读者,以函数设计为核心目标,通过完整且系统的讲解,帮助读者熟练掌握指针和数组的使用,并掌握多文件编程以及多文件之间的参数传递方法。
本书特点:
紧紧围绕函数设计的核心目标。本书以函数设计作为全书主线,将与之相关的指针、数组、函数、多文件编程等难点串联起来,通过各种实际问题,帮助读者克服编程中这些难于掌握的概念和技术。
案例驱动的讲授方式。本书贯彻C语言结构化设计方法,并将知识点融会于众多精选实例,通过读者喜闻乐见的俄罗斯方块等游戏程序综合讲解函数设计和多文件编程。
广泛适用于各类读者。本书超越了传统教科书的知识范畴,从一个个知识难点出发,不仅仅从提供答案的角度来为读者解惑,更希望给读者以编程思维方式上的启迪。既适合作为高校师生的课程补充读物,也可以作为程序员或者相关技术人员的编程参考手册。
免费的程序范例。本书提供全部程序代码,有需要的读者可访问华章网站(www.hzbook.com)下载,通过实际动手调试进一步增强编程能力。

图书前言

C语言编程仍然是编程工作者必备的技能。本书的基础版本《C语言解惑》通过比较编程中存在的典型错误,从而实现像雨珠打在久旱的沙滩上一样滴滴入骨的效果,使学习者更容易记住编程的要诀,并通过演示如何将一个能运行的程序优化为更好、更可靠的程序,使读者提高识别坏程序和好程序的能力。尽管如此,那本书仍然要照顾初学者并兼顾知识的完整性,所以讨论的深度有所限制。为此,我们决定推出它的提高版,并将讨论聚焦于函数设计。
本书将集中讨论C语言的核心部分——函数设计。函数设计涉及函数类型、函数参数及返回值,这就要求读者熟练掌握指针和数组的知识,此外,还要掌握多文件编程以及多文件之间的参数传递等知识。
因为本书要求读者已经学过C语言,所以我们可以完整、系统地论述各个部分的内容,无须赘述基础知识。本书的另一个特点是每一章之间都有知识交叉,进而达到讲透的目的。如果遇到不清楚的知识点,读者可以自行学习相应参考资料,也可以与《C语言解惑》配合学习。
本书的落脚点是实现C语言的结构化程序设计。为实现这一目标,本书专门选择了完整的设计实例。尤其是第10章,结合趣味游戏程序,综合讲解函数设计和多文件编程。
本书各个部分论述详细,涉及的知识面广,有些知识是传统教材中所没有的,所以它既可以作为从事教学的老师及工程技术人员的参考书,也可以作为常备手册。其实,它不仅对工程技术人员极有参考价值,也能帮助在校生进行编程训练或作为毕业论文的参考资料。此外,本书对于初学者也大有帮助,他们可以将它作为课外读物,对目前看不懂的地方,可以等具备相关知识之后再来研究,彼时将收获更大。总之,本书能帮助各类人群找到自己需要的知识并有所收获,而这也将拓宽本书的应用范围。
本书共分10章。第1章通过例子说明引入指针变量的必要性并简单介绍指针变量的基本性质。第2章通过实例解释指针的基本性质。第3章介绍数组及数组的边界不对称性。第4章介绍C语言中两个非常重要的概念——数组和指针。第5章介绍如何掌握函数设计和调用的正确方法。第6章介绍如何设计合理的函数类型及参数传递方式。第7章先讨论函数设计的一般原则,然后结合典型算法,用实例说明设计的具体方法,以便使读者进一步开阔眼界。第8章结合具体实例详细介绍头文件的编制、多个C 语言文件及工程文件的编制等方法,以提高读者的多文件编程能力。第9章给出两个典型的多文件编程实例,一个使用链表,另一个使用数组。第10章中的游戏程序实例将加深读者对一个完整工程项目的理解。为了学习方便,本书提供全部程序代码。
本书的两位作者分别撰写各章的不同小节,然后逐章讨论并独立成章。刘燕君负责第1~6章,刘振安负责第7~10章,最后由刘振安统稿。参与本书工作的还有周淞梅实验师、苏仕华副教授、鲍运律教授、刘大路博士、唐军高级工程师等。
在编写过程中,我们得到了中国科学院院士、中国科学技术大学陈国良教授的大力支持,特此表示感谢!对书中所引用资料的作者及网络作品的作者表示衷心感谢!

作 者
zaliu@ustc.edu.cn
2016年6月

上架指导

计算机\程序设计

封底文字

在C语言的使用中,函数设计是一项核心而颇具难度的工作。函数设计工作涉及函数类型、函数参数及返回值,这就要求程序员熟练掌握指针和数组的知识,此外还要掌握多文件编程以及多文件之间的参数传递等知识。本书面向已经具备C语言基础知识的读者,以函数设计为核心目标,通过完整且系统的讲解,帮助读者熟练掌握指针和数组的使用,并掌握多文件编程以及多文件之间的参数传递方法。

本书特色
?紧紧围绕函数设计的核心目标。本书以函数设计作为全书主线,将与之相关的指针、数组、函数、多文件编程等难点串联起来,通过各种实际问题,帮助读者克服编程中这些难于掌握的概念和技术。
?案例驱动的讲授方式。本书贯彻C语言结构化设计方法,并将知识点融会于众多精选实例,通过读者喜闻乐见的俄罗斯方块等游戏程序综合讲解函数设计和多文件编程。
?广泛适用于各类读者。本书超越了传统教科书的知识范畴,从一个个知识难点出发,不仅仅从提供答案的角度来为读者解惑,更希望给读者以编程思维方式上的启迪。既是和作为高校师生的课程补充读物,也可以作为程序员或者相关技术人员的编程参考手册。
?免费的程序范例。本书提供全部程序代码,有需要的读者可访问华章网站(www.hzbook.com)下载,通过实际动手调试进一步增强编程能力。
最后加47985的封面

作者简介

刘振安 刘燕君 编著:暂无简介

图书目录

前言
第1章 引入指针变量 1
1.1 变量的三要素 1
1.2 变量的操作 4
1.3 指针变量 5
1.4 指针类型 11
第2章 指针基础知识 13
2.1 指针运算符 13
2.2 指针移动 16
2.3 指针地址的有效性 21
2.4 指针的初始化 26
2.5 指针相等 29
2.6 对指针使用const限定符 32
2.7 使用动态内存 35
2.7.1 动态内存分配函数 36
2.7.2 内存分配实例 37
2.7.3 NULL指针 39
第3章 一维数组 40
3.1 一维数值数组 40
3.2 一维字符串数组 44
3.3 使用一维数组容易出现的错误 46
3.3.1 一维数组越界错误 46
3.3.2 一维数组初始化错误 49
3.3.3 数组赋值错误 50
3.3.4 求值顺序产生歧义错误 53
3.4 综合实例 54
第4章 指针与数组 59
4.1 数组与指针的关系 59
4.2 一维字符串数组与指针 61
4.3 字符串常量 63
4.4 指针数组 64
4.5 配合使用一维数组与指针 65
4.5.1 使用一维数组名简化操作 65
4.5.2 使用指针操作一维数值数组 66
4.5.3 使用一维字符数组 73
4.5.4 指针初始化实例 74
4.6 动态内存分配与非数组的指针 75
4.7 二维数组与指针 79
4.7.1 二维数组 79
4.7.2 二维数组操作实例 82
4.7.3 二维数组与指针的关系 85
4.7.4 二维数组与指向一维数组的指针 90
4.7.5 二维字符串数组 91
4.8 综合设计实例 95
4.8.1 使用数组求解 96
4.8.2 使用动态内存求解 99
4.8.3 使用二级字符串指针求解 101
第5章 函数基础知识 103
5.1 函数 103
5.1.1 函数和函数原型 104
5.1.2 函数值和return语句 104
5.1.3 函数调用形式 106
5.1.4 函数参数的基础知识 108
5.1.5 被调用函数的返回位置 114
5.2 C程序的典型结构 114
5.2.1 单文件结构 114
5.2.2 一个源文件和一个头文件 115
5.2.3 多文件结构 117
5.3 变量的作用域 121
5.3.1 单文件里的块结构及函数 122
5.3.2 单文件多函数的变量 131
5.3.3 多文件变量作用域 133
5.4 变量的存储地址分配 135
5.4.1 单文件变量的存储地址分配 135
5.4.2 多文件变量的存储地址分配 139
5.5 main函数原型及命令行参数 140
第6章 函数设计 143
6.1 函数设计的一般原则 143
6.1.1 函数设计基础 143
6.1.2 函数设计的注意事项 144
6.1.3 函数的一般结构 149
6.2 函数的返回值 157
6.2.1 无返回值的void类型函数 157
6.2.2 非void类型的函数必须返回一个值 159
6.2.3 使用临时变量作为返回值的函数 159
6.2.4 不能使用临时数组名作为返回值 160
6.2.5 返回临时指针必须是首地址 161
6.2.6 返回结构的函数 162
6.2.7 返回结构指针的函数 163
6.2.8 返回枚举的函数 164
6.3 函数参数的传递方式 166
6.3.1 传数值 166
6.3.2 传地址值 168
6.4 函数指针 180
6.5 理解函数声明 183
6.5.1 词法分析中的“贪心法” 183
6.5.2 克服语法“陷阱”读懂函数 185
6.6 函数设计举例 190
6.6.1 完璧归赵 190
6.6.2 多余的参数 193
6.6.3 传递的参数与函数参数匹配问题 195
6.6.4 等效替换参数 198
6.6.5 设计状态机函数 200
第7章 函数设计实例 204
7.1 函数的类型和返回值 204
7.1.1 函数的类型应力求简单 204
7.1.2 实参要与函数形参的类型匹配 206
7.1.3 正确设计函数的返回方式 208
7.1.4 正确区别指针函数和函数指针 214
7.2 正确选择函数参数 219
7.2.1 使用结构作为参数 219
7.2.2 使用键盘为参数赋值 222
7.2.3 结构的内存分配 226
7.3 算法基本概念 227
7.4 使用库函数 229
7.5 设计实例 230
7.5.1 递推与递归 230
7.5.2 递推求解切饼问题 233
7.5.3 八皇后问题 235
7.5.4 疑案求解 242
7.5.5 二分查找 247
7.5.6 汉诺塔问题 248
7.5.7 青蛙过河 251
7.5.8 猜数游戏 253
7.5.9 生死游戏 255
7.5.10 最短路径 263
第8章 多文件中的函数设计 272
8.1 C语言预处理器 272
8.1.1 宏定义与const修饰符 272
8.1.2 文件包含 274
8.1.3 条件编译 274
8.2 模块化程序设计基础 276
8.2.1 模块化程序设计 276
8.2.2 分块开发 276
8.2.3 工程文件 279
8.2.4 函数设计的注意事项 279
8.3 使用两个文件的设计实例 286
8.3.1 设计题目和实现方法 286
8.3.2 算法和函数设计 286
8.3.3 完整源程序 290
8.3.4 组成工程并运行程序 292
8.4 使用3个文件的设计实例 293
8.4.1 设计思想 293
8.4.2 算法分析 293
8.4.3 完整源程序 297
8.4.4 程序运行 301
8.5 使用条件编译的多文件设计实例 302
8.5.1 实现功能 302
8.5.2 设计思想 303
8.5.3 参考程序 305
8.5.4 程序运行 310
第9章 多文件综合设计实例 314
9.1 使用链表设计一个小型通讯录程序 314
9.1.1 功能设计要求 314
9.1.2 设计思想 315
9.1.3 程序设计 318
9.1.4 运行示范 327
9.2 使用数组设计一个实用的小型学生成绩管理程序 332
9.2.1 功能设计要求 332
9.2.2 总体设计 334
9.2.3 函数设计 335
9.2.4 参考程序 339
9.2.5 运行示范 356
第10章 设计游戏程序实例 365
10.1 剪刀、石头、布 365
10.1.1 设计思想 365
10.1.2 参考程序 367
10.1.3 运行示范 369
10.2 迷宫 370
10.2.1 设计思想 370
10.2.2 参考程序 371
10.2.3 运行示范 373
10.3 空战 375
10.3.1 设计思想 375
10.3.2 参考程序 376
10.4 贪吃蛇 381
10.4.1 供改造的源程序 381
10.4.2 运行示范 387
10.5 停车场 388
10.5.1 参考程序 388
10.5.2 运行示范 393
10.6 画矩形 393
10.6.1 用C语言编写Windows程序 394
10.6.2 Windows的程序结构 398
10.6.3 用C语言编写画矩形程序 400
10.7 俄罗斯方块 405
10.7.1 基本游戏规则 405
10.7.2 基本操作方法 406
10.7.3 编写游戏交互界面问题 406
10.7.4 用C语言编写控制台俄罗斯方块游戏 407
10.7.5 编写Windows俄罗斯方块游戏 419
10.8 用C语言编写Windows下的贪吃蛇游戏 430
10.8.1 程序清单 430
10.8.2 运行示范 442
附录 7位ASCII码表 444
参考文献 445

教学资源推荐
作者: (美)Harvey M.Deitel,Paul J.Deitel
作者: [美]梁勇(Y. Daniel Liang) 著
作者: 郑阿奇 梁敬东
作者: Brian W.Kernigham
参考读物推荐
作者: 陈春宝 徐筱刚 田建中 著
作者: [美] 莱斯利·兰伯特(Leslie Lamport) 著
作者: [西班牙]大卫·米兰·埃斯克里瓦(David Millán Escrivá)[西班牙]维尼休斯·G.门东萨(Vinícius G. Mendonça) [美]普拉蒂克·乔希(Prateek Joshi)著