本书全面讲述了C语言编程的相关概念和知识。\r\n 全书共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。\r\n 本书适合希望系统学习C语言的读者,也适用于精通其他编程语言并希望进一步掌握和巩固C编程技术的程序员。
第1章 概览 \r\n 1.1 C语言的起源 \r\n 1.2 使用C语言的理由 \r\n 1.3 C语言的发展方向 \r\n 1.4 计算机工作的基本原理 \r\n 1.5 高级计算机语言和编译器 \r\n 1.6 使用C语言的7个步骤 \r\n 1.7 编程机制 \r\n 1.8 语言标准 \r\n 1.9 本书的组织结构 \r\n 1.10 本书体例 \r\n 1.11 总结 \r\n 1.12 复习题 \r\n 1.13 编程练习 \r\n第2章 C语言概述 \r\n 2.1 C语言的一个简单实例 \r\n 2.2 实例说明 \r\n 2.3 一个简单程序的结构 \r\n 2.4 使程序可读的技巧 \r\n 2.5 更进一步 \r\n 2.6 多个函数 \r\n 2.7 调试 \r\n 2.8 关键字和保留标识符 \r\n 2.9 关键概念 \r\n 2.10 总结 \r\n 2.11 复习题 \r\n 2.12 编程练习 \r\n第3章 数据和C \r\n 3.1 示例程序 \r\n 3.2 变量与常量数据 \r\n 3.3 数据:数据类型关键字 \r\n 3.4 C数据类型 \r\n 3.5 使用数据类型 \r\n 3.6 参数和易犯的错误 \r\n 3.7 另一个例子:转义序列 \r\n 3.8 关键概念 \r\n 3.9 总结 \r\n 3.10 复习题 \r\n 3.11 编程练习 \r\n第4章 字符串和格式化输入/输出 \r\n 4.1 前导程序 \r\n 4.2 字符串简介 \r\n 4.3 常量和C预处理器 \r\n 4.4 研究和利用printf()和scanf() \r\n 4.5 关键概念 \r\n 4.6 总结 \r\n 4.7 复习题 \r\n 4.8 编程练习 \r\n第5章 运算符、表达式和语句 \r\n 5.1 循环简介 \r\n 5.2 基本运算符 \r\n 5.3 其他运算符 \r\n 5.4 表达式和语句 \r\n 5.5 类型转换 \r\n 5.6 带有参数的函数 \r\n 5.7 一个示例程序 \r\n 5.8 关键概念 \r\n 5.9 总结 \r\n 5.10 复习题 \r\n 5.11 编程练习 \r\n第6章 C控制语句:循环 \r\n 6.1 再探while循环 \r\n 6.2 while语句 \r\n 6.4 不确定循环与计数循环 \r\n 6.5 for循环 \r\n 6.6 更多赋值运算符:+=、-=、*=、/=和%= \r\n 6.7 逗号运算符 \r\n 6.8 退出条件循环:do while \r\n 6.9 选择哪种循环 \r\n 6.10 嵌套循环 \r\n 6.11 数组 \r\n 6.12 使用函数返回值的循环例子 \r\n 6.13 关键概念 \r\n 6.14 总结 \r\n 6.15 复习题 \r\n 6.16 编程练习 \r\n第7章 C控制语句:分支和跳转 \r\n 7.1 if语句 \r\n 7.2 在if语句中添加else关键字 \r\n 7.3 获得逻辑性 \r\n 7.4 一个统计字数的程序 \r\n 7.5 条件运算符?: \r\n 7.6 循环辅助手段:continue和break \r\n 7.7 多重选择:switch和break \r\n 7.8 goto语句 \r\n 7.9 关键概念 \r\n 7.10 总结 \r\n 7.11 复习题 \r\n 7.12 编程练习 \r\n第8章 字符输入/输出和输入确认 \r\n 8.1 单字符I/O:getchar()和putchar() \r\n 8.2 缓冲区 \r\n 8.3 终止键盘输入 \r\n 8.5 创建一个更友好的用户界面 \r\n 8.6 输入确认 \r\n 8.7 菜单浏览 \r\n 8.8 关键概念 \r\n 8.9 总结 \r\n 8.10 复习题 \r\n 8.11 编程练习 \r\n第9章 函数 \r\n 9.1 函数概述 \r\n 9.2 ANSI C的函数原型 \r\n 9.3 递归 \r\n 9.4 多源代码文件程序的编译 \r\n 9.5 地址运算符:& \r\n 9.6 改变调用函数中的变量 \r\n 9.7 指针简介 \r\n 9.8 关键概念 \r\n 9.9 总结 \r\n 9.10 复习题 \r\n 9.11 编程练习 \r\n第10章 数组和指针 \r\n 10.1 数组 \r\n 10.2 多维数组 \r\n 10.3 指针和数组 \r\n 10.4 函数、数组和指针 \r\n 10.5 指针操作 \r\n 10.6 保护数组内容 \r\n 10.7 指针和多维数组 \r\n 10.8 变长数组(VLA) \r\n 10.9 复合文字 \r\n 10.10 关键概念 \r\n 10.11 总结 \r\n 10.12 复习题 \r\n 10.13 编程练习 \r\n第11章 字符串和字符串函数 \r\n 11.1 字符串表示和字符串I/O \r\n 11.2 字符串输入 \r\n 11.3 字符串输出 \r\n 11.4 自定义字符串输入/输出函数 \r\n 11.5 字符串函数 \r\n 11.6 字符串例子:字符串排序 \r\n 11.7 ctype.h字符函数和字符串 \r\n 11.8 命令行参数 \r\n 11.9 把字符串转换为数字 \r\n 11.10 关键概念 \r\n 11.11 总结 \r\n 11.12 复习题 \r\n 11.13 编程练习 \r\n第12章 存储类、链接和内存管理 \r\n 12.1 存储类 \r\n 12.2 存储类说明符 \r\n 12.3 存储类和函数 \r\n 12.4 随机数函数和静态变量 \r\n 12.5 掷骰子 \r\n 12.6 分配内存:malloc()和free() \r\n 12.7 ANSI C的类型限定词 \r\n 12.8 关键概念 \r\n 12.9 总结 \r\n 12.10 复习题 \r\n 12.11 编程练习 \r\n第13章 文件输入/输出 \r\n 13.1 和文件进行通信 \r\n 13.2 标准I/O \r\n 13.3 一个简单的文件压缩程序 \r\n 13.4 文件I/O:fprintf ( )、fscanf ( )、fgets ( )和fputs ( )函数 \r\n 13.5 随机存取:fseek()和ftell()函数 \r\n 13.6 标准I/O内幕 \r\n 13.7 其他标准I/O函数 \r\n 13.8 关键概念 \r\n 13.9 总结 \r\n 13.10 复习题 \r\n 13.11 编程练习 \r\n第14章 结构和其他数据形式 \r\n 14.1 示例问题:创建图书目录 \r\n 14.2 建立结构声明 \r\n 14.3 定义结构变量 \r\n 14.4 结构数组 \r\n 14.5 嵌套结构 \r\n 14.6 指向结构的指针 \r\n 14.7 向函数传递结构信息 \r\n 14.8 把结构内容保存到文件中 \r\n 14.9 结构:下一步是什么 \r\n 14.10 联合简介 \r\n 14.11 枚举类型 \r\n 14.12 typedef简介 \r\n 14.13 奇特的声明 \r\n 14.14 函数和指针 \r\n 14.15 关键概念 \r\n 14.16 总结 \r\n 14.17 复习题 \r\n 14.18 编程练习 \r\n第15章 位操作 \r\n 15.1 二进制数、位和字节 \r\n 15.2 其他基数 \r\n 15.3 C的位运算符 \r\n 15.4 位字段 \r\n 15.5 关键概念 \r\n 15.6 总结 \r\n 15.7 复习题 \r\n 15.8 编程练习 \r\n第16章 C预处理器和C库 \r\n 16.1 翻译程序的第一步 \r\n 16.2 明显常量:#define \r\n 16.3 在#define中使用参数 \r\n 16.4 宏,还是函数\r\n 16.5 文件包含:#include \r\n 16.6 其他指令 \r\n 16.7 内联函数 \r\n 16.8 C库 \r\n 16.9 数学库 \r\n 16.10 通用工具库 \r\n 16.11 诊断库 \r\n 16.12 string.h库中的memcpy()和memmove() \r\n 16.13 可变参数:stdarg.h \r\n 16.14 关键概念 \r\n 16.15 总结 \r\n 16.16 复习题 \r\n 16.17 编程练习 \r\n第17章 高级数据表示 \r\n 17.1 研究数据表示 \r\n 17.2 从数组到链表 \r\n 17.3 抽象数据类型(ADT) \r\n 17.4 队列ADT \r\n 17.5 用队列进行模拟 \r\n 17.6 链表与数组 \r\n 17.7 二叉搜索树 \r\n 17.8 其他说明 \r\n 17.9 关键概念 \r\n 17.10 总结 \r\n 17.11 复习题 \r\n 17.12 编程练习 \r\n附录A 复习题答案 \r\n附录B 参考资料
Stephen Prata在加利福尼亚州的Kentfield的Marin学院教授天文学、物理学和程序设计课程。他在加州工业学院获得学士学位,从加州大学伯克利分校获得博士学位。他最早接触计算机,始于对星河的计算机建模。Stephen已经编写或与他人合作编写了十多本书。其中包括C++Primer Plus和Unix Prinmer Plus.
1984年, 当C Primer Plus的第一版刚刚完稿的时候, C还是一种相对鲜为人知的语言. 这种语言从那时才开始兴起, 很多人都是在该书的帮助下掌握C语言的. 实际上, 已经有超过50万的人购买过C Primer Plus的各个不同版本的书.
随着C语言从最初的非正式的K&R标准过渡到1990 ISO/ANSI标准, 进而发展到1999 ISO/ANSI标准, C Primer Plus也不断地成熟, 并发展到第五版. 在所有这些版本中, 我的目标都是致力于编写一本富有指导性的. 清晰的C语言教程.
本书的方法和目标
我编写这本书的目标是让人们能够把它当作一个友好的. 易于使用的. 便于自学的指南, 为了实现这个目标, 本书采用了以下的策略:
● 在介绍C语言细节的同时, 还阐述了编程概念. 本书假定读者并非专业的程序员.
● 每次通过很多简短的. 易于录入的实例来说明一两个概念, 因为边干边学是掌握新的信息的最有效的方式之一.
● 只用语言难以阐述的概念, 采用图表来澄清.
● 突出显示的板块总结了C语言的主要特征, 以便于参考和复习.
● 每章最后的复习题和编程练习帮助你测试和加深对C语言的理解.
为了求得最佳学习效果, 在学习本书内容的时候, 你应该尽可能地扮演一个积极的角色. 不仅只是阅读例子, 还要把它们输入到你的系统, 然后运行. C是一种可移植性很好的语言, 但你还是会发现某个程序在你的系统下运行的结果和在我们的系统下运行的结果会有所不同. 不妨做个试验, 改变程序的某一部分来看看有什么效果. 修改程序来做略微有些不同的事情. 不必理会无关的警告, 主要是看一下执行了一个错误操作时会发生什么. 尝试提出问题和做练习. 实践的越多, 你所学到和记住的也就越多.
我希望你能够通过本书最新的版本, 愉快而又高效地走入C语言的学习殿堂.
关于作者
Stephen Prata在加利福尼亚州的Kentfield得Matin学院教授天文学. 物理学和程序设计课程. 他在加州工业学院获得学士学位, 从加州大学伯克利分校获得博士学位. 他最早接触计算机, 始于对星河的计算机建模. Stephen已经编写或与他人合作编写了十多本书, 其中包括C++ Primer Plus和Unix Primer Plus.