书海网短评:
编程导师IvorHorton经典巨作,长期位居C语言开发类零售榜首,第五版全新包装隆重上市,超高助你快速掌握C语言,提升您的编程技能;完善您的职业生涯IvorHorton经典作品:
编程导师IvorHorton经典巨作,长期位居C语言开发类零售榜首,第五版全新包装隆重上市,超高助你快速掌握C语言,提升您的编程技能;完善您的职业生涯
IvorHorton经典作品:
《C语言入门经典(第5版)》
《C++入门经典(第4版)》
《C++标准模板库编程实战》
《VisualC++2013入门经典(第7版)》
C语言是每一位程序员都应该掌握的基础语言。C语言是微软。NET编程中使用的C#语言的基础;C语言是iPhone、iPad和其他苹果设备编程中使用的Objective-C语言的基础;C语言是在很多环境中(包括GNU项目)被广泛使用的C++语言的基础。C语言也是Linux操作系统及其很多功能的基础。学习C语言可以给编程职业生涯提供牢固的基础,也有助于更好地理解更为现代的语言(如Java)。《C语言入门经典(第5版)》主要介绍基础的计算机语言之一——C语言。《C语言入门经典(第5版)》从基础的内容开始,步步深入讲解作为一位称职的C语言程序员应该具备的知识和技能。
主要内容:
◆阐述C语言的核心特征,例如循环和分支
◆如何使用指针和指令动态管理内存
◆如何使用头文件和函数模块化代码
◆程序如何通过键盘、显示器和数据文件读写数据
◆如何通过预处理命令在编译时优化代码
◆如何使用结构有效地管理输入数据
《C语言入门经典(第5版)》完整地介绍了一个C应用程序的开发过程,这样你在阅读过程中可以结合实际的应用场景提高编程技能。书中的样例提供了实验的基础,可以通过修改其中的部分代码来对比前后程序运行的结果。后面的练习题用来测试对新知识、新技能的掌握情况,如果需要练习题答案,可以网上下载。
阅读完《C语言入门经典(第5版)》,你应该有能力和信心开发自己的C应用程序,并且具备在大型项目中应用C语言思想的技能。第5版详细介绍了C语言的新国际标准,并且修订涵盖了语言编译器新支持的C11功能。
IvorHorton,世界著名计算机图书作家,独立顾问,帮助无数程序员步入编程殿堂。他曾在IBM工作多年,以优异成绩拥有数学学士学位。他的资历包括:使用大多数语言(如在多种机器上使用汇编语言和高级语言)进行编程,实时编程,设计和实现实时闭环工业控制系统。Horton拥有丰富的面向工程师和科学家的编程教学经验(教学内容包括C、C++、Fortran、PL/1、APL等)。同时,他还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。
第1章C语言编程
1.1C语言
1.2标准库
1.3学习C
1.4创建C程序
1.4.1编辑
1.4.2编译
1.4.3链接
1.4.4执行
1.5创建第一个程序
1.6编辑第一个程序
1.7处理错误
1.8剖析一个简单的程序
1.8.1注释
1.8.2预处理指令
1.8.3定义main()函数
1.8.4关键字
1.8.5函数体
1.8.6输出信息
1.8.7参数
1.8.8控制符
1.8.9三字母序列
1.9预处理器
1.10用C语言开发程序
1.10.1了解问题
1.10.2详细设计
1.10.3实施
1.10.4测试
1.11函数及模块化编程
1.12常见错误
1.13要点
1.14小结
1.15习题
第2章编程初步
2.1计算机的内存
2.2什么是变量
2.3存储整数的变量
2.3.1变量的使用
2.3.2变量的初始化
2.4变量与内存
2.4.1带符号的整数类型
2.4.2无符号的整数类型
2.4.3指定整数常量
2.5使用浮点数
2.6浮点数变量
2.6.1使用浮点数完成除法运算
2.6.2控制输出中的小数位数
2.6.3控制输出的字段宽度
2.7较复杂的表达式
2.8定义命名常量
2.8.1极限值
2.8.2sizeof运算符
2.9选择正确的类型
2.10强制类型转换
2.10.1自动转换类型
2.10.2隐式类型转换的规则
2.10.3赋值语句中的隐式类型转换
2.11再谈数值数据类型
2.11.1字符类型
2.11.2字符的输入输出
2.11.3枚举
2.11.4存储布尔值的变量
2.12赋值操作的op=形式
2.13数学函数
2.14设计一个程序
2.14.1问题
2.14.2分析
2.14.3解决方案
2.15小结
2.16练习
第3章条件判断
3.1判断过程
3.1.1算术比较
3.1.2基本的if语句
3.1.3扩展if语句:if-else
3.1.4在if语句中使用代码块
3.1.5嵌套的if语句
3.1.6测试字符
3.1.7逻辑运算符
3.1.8条件运算符
3.1.9运算符的优先级
3.2多项选择问题
3.2.1给多项选择使用else-if语句
3.2.2switch语句
3.2.3goto语句
3.3按位运算符
3.3.1按位运算符的op=用法
3.3.2使用按位运算符
3.4设计程序
3.4.1问题
3.4.2分析
3.4.3解决方案
3.5小结
3.6练习
第4章循环
4.1循环
4.2递增和递减运算符
4.3for循环
4.4for循环的一般语法
4.5再谈递增和递减运算符
4.5.1递增运算符
4.5.2递增运算符的前置和后置形式
4.5.3递减运算符
4.6再论for循环
4.6.1修改for循环变量
4.6.2没有参数的for循环
4.6.3循环内的break语句
4.6.4使用for循环限制输入
4.6.5生成伪随机整数
4.6.6再谈循环控制选项
4.6.7浮点类型的循环控制变量
4.7while循环
4.8嵌套循环
4.9嵌套循环和goto语句
4.10do-while循环
4.11continue语句
4.12设计程序
4.12.1问题
4.12.2分析
4.12.3解决方案
4.13小结
4.14习题
第5章数组
5.1数组简介
5.1.1不用数组的程序
5.1.2什么是数组
5.1.3使用数组
5.2寻址运算符
5.3数组和地址
5.4数组的初始化
5.5确定数组的大小
5.6多维数组
5.7多维数组的初始化
5.8变长数组
5.9设计一个程序
5.9.1问题
5.9.2分析
5.9.3解决方案
5.10小结
5.11习题
第6章字符串和文本的应用
6.1什么是字符串
6.2存储字符串的变量
6.3字符串操作
6.3.1检查对C11的支持
6.3.2确定字符串的长度
6.3.3复制字符串
6.3.4连接字符串
6.3.5比较字符串
6.3.6搜索字符串
6.3.7单元化字符串
6.3.8将换行符读入字符串
6.4分析和转换字符串
6.4.1转换字符的大小写形式
6.4.2将字符串转换成数值
6.5设计一个程序
6.5.1问题
6.5.2分析
6.5.3解决方案
6.6小结
6.7习题
第7章指针
7.1指针初探
7.1.1声明指针
7.1.2通过指针访问值
7.1.3使用指针
7.1.4指向常量的指针
7.1.5常量指针
7.1.6指针的命名
7.2数组和指针
7.3多维数组
7.3.1多维数组和指针
7.3.2访问数组元素
7.4内存的使用
7.4.1动态内存分配:malloc()函数
7.4.2释放动态分配的内存
7.4.3用calloc()函数分配内存
7.4.4扩展动态分配的内存
7.5使用指针处理字符串
7.5.1使用指针数组
7.5.2指针和数组记号
7.6设计程序
7.6.1问题
7.6.2分析
7.6.3解决方案
7.7小结
7.8习题
第8章编程的结构
8.1程序的结构
8.1.1变量的作用域和生存期
8.1.2变量的作用域和函数
8.2函数
8.2.1定义函数
8.2.2return语句
8.3按值传递机制
8.4函数原型
8.5指针用作参数和返回值
8.5.1常量参数
8.5.2返回指针的风险
8.6小结
8.7习题
第9章函数再探
9.1函数指针
9.1.1声明函数指针
9.1.2通过函数指针调用函数
9.1.3函数指针的数组
9.1.4作为变元的函数指针
9.2函数中的变量
9.2.1静态变量:函数内部的追踪
9.2.2在函数之间共享变量
9.3调用自己的函数:递归
9.4变元个数可变的函数
9.4.1复制va_list
9.4.2长度可变的变元列表的基本规则
9.5main()函数
9.6结束程序
9.6.1abort()函数
9.6.2exit()和atexit()函数
9.6.3_Exit()函数
9.6.4quick_exit()和at_quick_exit()函数
9.7提高性能
9.7.1内联声明函数
9.7.2使用restrict关键字
9.7.3_Noreturn函数限定符
9.8设计程序
9.8.1问题
9.8.2分析
9.8.3解决方案
9.9小结
9.10习题
第10章基本输入和输出操作
10.1输入和输出流
10.2标准流
10.3键盘输入
10.3.1格式化键盘输入
10.3.2输入格式控制字符串
10.3.3输入格式字符串中的字符
10.3.4输入浮点数的各种变化
10.3.5读取十六进制和八进制值
10.3.6用scanf_s()读取字符
10.3.7从键盘上输入字符串
10.3.8单个字符的键盘输入
10.4屏幕输出
10.4.1使用printf_s()的格式化输出
10.4.2转义序列
10.4.3整数输出
10.4.4输出浮点数
10.4.5字符输出
10.5其他输出函数
10.5.1屏幕的非格式化输出
10.5.2数组的格式化输出
10.5.3数组的格式化输入
10.6小结
10.7习题
第11章结构化数据
11.1数据结构:使用struct
11.1.1定义结构类型和结构变量
11.1.2访问结构成员
11.1.3未命名的结构
11.1.4结构数组
11.1.5表达式中的结构成员
11.1.6结构指针
11.1.7为结构动态分配内存
11.2再探结构成员
11.2.1将一个结构作为另一个结构的成员
11.2.2声明结构中的结构
11.2.3将结构指针用作结构成员
11.2.4双向链表
11.2.5结构中的位字段
11.3结构与函数
11.3.1结构作为函数的变元
11.3.2结构指针作为函数变元
11.3.3作为函数返回值的结构
11.3.4二叉树
11.4共享内存
11.5设计程序
11.5.1问题
11.5.2分析
11.5.3解决方案
11.6小结
11.7习题
第12章处理文件
12.1文件的概念
12.1.1文件中的位置
12.1.2文件流
12.2文件访问
12.2.1打开文件
12.2.2缓存文件操作
12.2.3文件重命名
12.2.4关闭文件
12.2.5删除文件
12.3写入文本文件
12.4读取文本文件
12.5在文本文件中读写字符串
12.6格式化文件的输入输出
12.6.1格式化文件输出
12.6.2格式化文件输入
12.7错误处理
12.8再探文本文件操作模式
12.9freopen_s()函数
12.10二进制文件的输入输出
12.10.1以二进制模式打开文件
12.10.2写入二进制文件
12.10.3读取二进制文件
12.11在文件中移动
12.11.1文件定位操作
12.11.2找出我们在文件中的位置
12.11.3在文件中设定位置
12.12使用临时文件
12.12.1创建临时文件
12.12.2创建唯一的文件名
12.13更新二进制文件
12.13.1修改文件的内容
12.13.2从键盘输入创建记录
12.13.3将记录写入文件
12.13.4从文件中读取记录
12.13.5写入文件
12.13.6列出文件内容
12.13.7更新已有的文件内容
12.14文件打开模式小结
12.15设计程序
12.15.1问题
12.15.2分析
12.15.3解决方案
12.16小结
12.17习题
第13章支持功能
13.1预处理
13.1.1在程序中包含头文件
13.1.2定义自己的头文件
13.1.3管理多个源文件
13.1.4外部变量
13.1.5静态函数
13.1.6替换程序源代码
13.2宏
13.2.1看起来像函数的宏
13.2.2字符串作为宏参数
13.2.3在宏展开式中结合两个变元
13.3多行上的预处理器指令
13.3.1预处理器逻辑指令
13.3.2条件编译
13.3.3测试多个条件
13.3.4取消定义的标识符
13.3.5测试标识符的指定值的指令
13.3.6多项选择
13.3.7标准预处理宏
13.4调试方法
13.4.1集成的调试器
13.4.2调试阶段的预处理器
13.4.3断言
13.5日期和时间函数
13.5.1获取时间值
13.5.2获取日期
13.5.3确定某一天是星期几
13.6小结
13.7习题
第14章高级专用主题
14.1使用国际字符集
14.1.1理解Unicode
14.1.2设置区域
14.1.3宽字符类型wchar_t
14.1.4宽字符串的操作
14.1.5宽字符的文件流操作
14.1.6存储Unicode字符的固定大小类型
14.2用于可移植性的专用整数类型
14.2.1固定宽度的整型
14.2.2最小宽度的整型
14.2.3最大宽度的整型
14.3复数类型
14.3.1复数基础
14.3.2复数类型和操作
14.4用线程编程
14.4.1创建线程
14.4.2退出线程
14.4.3把一个线程连接到另一个线程上
14.4.4挂起线程
14.4.5管理线程对数据的访问
14.5小结
附录A计算机中的数学知识
附录BASCII字符代码定义
附录CC语言中的保留字
附录D输入输出格式说明符
附录E标准库头文件
欢迎使用《C语言入门经典(第5版)》。研读《C语言入门经典(第5版)》,你就可以成为一位称职的C语言程序员。从许多方面来说,C语言都是学习程序设计的理想起步语言。C语言很简洁,因此无须学习大量的语法便能够开始编写真正的应用程序。除了简明易学以外,它还是一门功能非常强大的语言,并被专业人士广泛应用在各种领域。C语言的强大之处主要体现在,它能够应用于各类层次的开发中,从设备驱动程序和操作系统组件到大规模应用程序,它都能胜任。此外,C语言还可以适用于相对较新的手机应用程序开发上。
几乎所有计算机都包含C语言编译器,因此,当你学会了C语言,就可以在任何环境下进行编程。最后一点,掌握C语言可以为理解面向对象的C++语言奠定良好的基础。
在作者眼中,有抱负的程序员必将面对三重障碍,即掌握遍布程序设计语言中的各类术语、理解如何使用语言元素(而不仅仅只是知道它们的概念)以及领会如何在实际场景中应用该语言。《C语言入门经典(第5版)》的目的就是将这些障碍降到最低限度。
术语是专业人士及优秀业余爱好者之间的交流必不可少的,因此有必要掌握它们。《C语言入门经典(第5版)》将确保你理解这些术语,并自如地在各种环境下使用它们。这样才能更有效地使用大多数软件产品附带的文档,且能轻松地阅读和学习大部分程序设计语言相关的著作。
理解语言元素的语法和作用固然是学习C语言过程中的一个重要部分,但认识语言特性如何工作及应用也同等重要。《C语言入门经典(第5版)》不仅采用了代码片段,还在每个章节中使用一些实际应用示例展示语言特性如何应用于特定的问题。这些示例提供了实践的基础,读者可以通过改动代码观察修改后的结果。
理解特定背景下的程序设计不仅只是应用个别语言元素。为了帮助读者理解它们,《C语言入门经典(第5版)》大部分章节之后都给出了一个较为复杂的应用程序,以应用本章之前学到的知识。这些程序可以帮助你获得开发应用程序的能力与信心,了解如何联合以及更大范围地应用语言元素。最重要的是,它们能让你了解设计实际应用程序与管理实际代码会碰到的问题。
不管学习什么程序设计语言,有几件事情都要意识到。首先,虽然要学的东西很多,但是掌握它们之后,你就会有极大的成就感。其次,学习的过程很有趣,你会深深地体会到这点;第三,只有通过动手实践才能学会编程,这也是《C语言入门经典(第5版)》贯彻的思想。最后,在学习的过程中,肯定会时不时犯许多错误和感到沮丧。当觉得自己完全停滞时,你要做的就是坚持。最终你一定会体验到成功的喜悦,并且回头想想时,你会觉得它也并没有你想象中的那么难。
如何使用《C语言入门经典(第5版)》
作者认为动手实践是学习编程最好的方法,很快你就会编写第一个程序了。每一章都会有几个将理论应用于实践的程序,它们也是《C语言入门经典(第5版)》的核心所在。建议读者手工键入并运行书中的示例,因为手工键入可以极大地帮助记忆语言元素。此外,你还应当尝试解决每章末尾的所有练习题。当你第一次将一个程序运行成功,尤其是在解决自己的问题后,你会感觉到很大的成就感和惊人的进步速度,那时你一定会觉得一切都挺值得。
刚开始,学习的进展不会太快,不过随着逐渐深入,你的学习速度会越来越快。每一章都会涉及许多基础知识,因此在学习新的内容之前,需要花些时间确保理解前面学习过的所有知识。实践各部分的代码,并尝试实现自己的想法,这是学习程序设计语言的一个重要部分。尝试修改书中的程序,看看还能让它们做些什么,那才是有趣之处。不要害怕尝试,如果某些地方不太明白,尝试输入一些变体,看看会出现什么情况。出错并没什么大不了,你会从出错中学到很多知识。一个不错的方法是彻底通读每一章,了解各章的范围,然后回过头来过一遍所有的示例。
你可能会觉得某些章末尾的练习题非常难。如果第一次没有完全搞明白,不用担心。之所以第一次觉得困难是因为它们通常都是将你所学的知识应用到了相对复杂的问题中。如果你实在觉得困难的话,可以略过它们继续学习下一章,然后再回头研究这些程序。你甚至可以阅读完整《C语言入门经典(第5版)》再考虑它们。尽管如此,如果你能完成练习的话,说明你取得了真正的进步。
《C语言入门经典(第5版)》读者对象
《C语言入门经典(第5版)》的目的是教会读者如何尽可能简单快速地编写有用的程序。在阅读完《C语言入门经典(第5版)》后,读者会彻底了解C语言编程。这本教程面向的是那些之前编过一些程序,了解背后的概念,并且希望通过学习C语言进一步扩展知识的读者。尽管如此,《C语言入门经典(第5版)》并未假设读者拥有先前的编程知识,因此如果你刚刚接触编程,《C语言入门经典(第5版)》依然是你的不错选择。









