您好,欢迎来到聚文网。 登录 免费注册
C语言核心技术

C语言核心技术

  • 装帧: 平装
  • 出版社: 机械工业出版社
  • 作者: (德)彼得·普林茨(Peter Prinz),(德)托尼·克劳福德(Tony Crawford) 著;袁野 译
  • 出版日期: 2017-08-01
  • 商品条码: 9787111562207
  • 版次: 1
  • 开本: 16开
  • 页数: 776
  • 出版年份: 2017
定价:¥139 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
内容简介
这本新版的经典O’Reilly参考书,对于C语言及其运行库中的每个特性给予了清晰、详细的解释,包括多线程、泛型宏,以及其他2011年C语言标准(C11)中的新功能。如果您想理解一个陌生函数的作用,以及标准链接库是如何规范它的执行,您可以在本书中找到答案。对于有经验的C与C++程序员,这本书也相当适用,它包含了GNU软件工具集中常用工具的使用说明。您将会学到如何使用GNUmake创建C程序,从C源代码编译获得执行程序,以及使用GNU调试器对程序进行测试与调试。
作者简介
彼得·普林茨,是积极的研讨会组织者和关键课程开发者,向数以千计的软件开发者教授Unix和Windows系统技术。他也是多本有关C/C++软件开发图书的合著者。
托尼·克劳福德,是一名技术作家与译者,他在C语言、软件本地化与网络管理方面具有丰富的经验。
目录
前言1
第1部分语言
第1章C语言基础11
1.1C语言特性11
1.2C语言程序的结构12
1.3源代码文件14
1.4注释15
1.5字符集16
1.6标识符22
1.7C编译器运行原理26
第2章数据类型29
2.1数据类型分类29
2.2整数类型30
2.3浮点类型36
2.4复数浮点类型38
2.5枚举类型39
2.6void类型40
2.7对象在内存中的对齐方式41
第3章字面量43
3.1整数常量43
3.2浮点常量44
3.3字符常量46
3.4字符串字面量49
第4章类型转换53
4.1算术类型的转换54
4.2非算术类型的转换61
第5章表达式和运算符69
5.1如何计算表达式70
5.2运算符细节75
5.3常量表达式98
第6章语句100
6.1表达式语句100
6.2语句块101
6.3循环102
6.4选择语句106
6.5无条件跳转110
第7章函数114
7.1函数定义114
7.2函数声明121
7.3函数如何被执行122
7.4指针作为参数和返回值122
7.5内联函数124
7.6无返回函数125
7.7递归函数126
7.8可变参数函数127
第8章数组129
8.1定义数组129
8.2获取数组元素131
8.3初始化数组132
8.4字符串134
8.5多维数组136
8.6数组作为函数参数138
第9章指针140
9.1声明指针140
9.2指针运算143
9.3指针和类型限定符147
9.4数组的指针和指针的数组151
9.5指向函数的指针155
第10章结构、联合与位字段157
10.1结构157
10.2联合167
10.3匿名结构与联合169
10.4位字段170
第11章声明173
11.1对象与函数声明174
11.2类型名称181
11.3typedef声明182
11.4_Static_assert声明184
11.5标识符的链接185
11.6对象的存储周期186
11.7初始化187
第12章动态内存管理190
12.1动态内存分配190
12.2已分配内存的特性192
12.3调整内存大小和释放内存193
12.4通用二叉树194
12.5特性195
12.6二叉树的实现195
第13章输入和输出205
13.1流205
13.2文件207
13.3打开和关闭文件209
13.4读操作和写操作211
13.5文件随机访问230
第14章多线程233
14.1线程233
14.2访问共享数据238
14.3线程间的通信:条件变量245
14.4线程对象和线程存储249
第15章预处理命令253
15.1插入头文件的内容254
15.2定义和使用宏256
15.3泛型宏263
15.4条件式编译264
15.5定义行号266
15.6生成错误消息266
15.7#pragma命令267
15.8_Pragma运算符267
15.9预定义的宏268
第二部分标准库
第16章标准头273
16.1使用标准头273
16.2边界检查函数277
16.3标准头的内容278
第17章函数简介308
17.1输入和输出308
17.2数学函数309
17.3字符分类和转换316
17.4字符串处理318
17.5多字节字符319
17.6在数字与字符串之间转换321
17.7搜索和排序322
17.8内存区域处理322
17.9动态内存管理323
17.10日期和时间323
17.11进程控制324
17.12国际化325
17.13非本地跳转326
17.14多线程(C11)327
17.15调试331
17.16错误消息331
第18章标准库函数333
第三部分基本工具
第19章使用GCC编译C程序673
19.1GNU编译器套件673
19.2获取和安装GCC674
19.3使用GCC编译C程序675
19.4C方言685
19.5编译器警告686
19.6优化688
19.7调试692
19.8剖析692
19.9选项和环境变量汇总692
第20章使用make构建C程序698
20.1目标、依赖和命令698
20.2Makefile699
20.3规则699
20.4注释706
20.5变量707
20.6伪目标714
20.7其他目标属性716
20.8宏717
20.9函数718
20.10命令722
20.11执行make命令725
第21章使用GDB调试C程序733
21.1安装GDB733
21.2调试过程示例734
21.3启动GDB738
21.4使用GDB命令743
21.5在GDB内分析核心文件765
第22章使用IDE767
22.1针对C语言的IDE767
22.2针对C/C++的EclipseIDE768
22.3使用Eclipse开发一个C程序770
22.4使用Eclipse调试一个C程序773
22.5关于Eclipse的更多信息775
摘要
本书是一本关于C编程语言与C语言链接库的完整参考手册。作为一本阐述核心技术(In a Nutshell)的书,它的目的是在日常工作中为C语言程序员提供方便、可靠的辅助作用。本书介绍了C语言的所有元素,并通过大量的示例展示了这些元素的用法。    最新的C语言规范是2011年发布的C语言国际标准,ISO/IEC 9899:2011,通常称为C11。该标准取代了C99标准(ISO/IEC 9899:1999)及其技术修正,这些修正包括2001年的TC1、2004年的TC2,以及2007年的TC3。第一个C语言国际标准于1990年发布,名为ISO/IEC 9899:1990,它于1995年增补了规范性附录1(ISO/IEC9899/AMD1:1995)。1990年的ISO/IEC标准对应于ANSI标准X3.159,后者于1989年发布,通常称为ANSI C或C89。    并非所有编译器以及标准库实现版本都支持2011年所发布C语言标准的新特性。因此,在本书中,我们会在2011年C语言标准的新特性上标注C11(例如多线程、泛型宏,以及新的标准库函数)。在C99标准所引入的扩展特性上标注C99。    本书不是针对C语言编程的入门书籍。虽然它涵盖了该语言的所有基础,但这些内容并非以教程的形式组织编写。如果你尚未接触过C语言,我们建议你先学习至少一本C语言入门书籍。如果你有其他编程语言的经验,例如Java或C++,也可以直接参考本书。    本书的组织方式    本书分为三部分。第一部分严格按照各项介绍C语言;第二部分介绍标准库;第三部分通过GNU软件集合中广泛使用的工具,介绍程序的编译与测试过程。    第一部分    第一部分包括第1~15章,介绍C语言的基础知识。第1章介绍了C语言的常见概念与元素,在后续几章每章都有一个具体的主题,例如类型、语句、指针等。这些章节主题次序的排列原则是:后一个主题涵盖的内容在之前的主题中已经介绍过(例如,先介绍类型,然后是表达式和运算符,接着是语句,等等),但有时候在阅读当前章节时仍然需要参考后续章节,以了解一些相关的细节。例如,虽然指针与数组的详细介绍在第8章与第9章,但是在第5章中提前讨论指针与数组是十分有必要的(第5章介绍表达式和运算符)。    第1章,C语言基础    介绍C语言的特性,以及如何编写和编译C程序。本章引入了一些基本概念,例如翻译单元、字符集与标识符。    第2章,数据类型    首先综述C语言中的类型,然后介绍了基本类型、void类型与枚举类型。    第3章,字面量    介绍数字常量、字符常量、字符串字面量,包括转义符。    第4章,类型转换    介绍显式与隐式的类型转换,包括整数提升与寻常算术转换。    第5章,表达式和运算符    介绍表达式的计算、所有运算符,以及与运算符对应的操作数。    第6章,语句    介绍C语言的语句,例如语句块、循环,以及跳转。    .    第7章,函数    介绍函数的定义与函数的调用,包括递归函数与内联函数。    第8章,数组    介绍固定长度数组与长度可变数组,包含字符串、数组初始化,以及多维数组等。    第9章,指针    介绍对象指针与函数指针的定义及使用方法。    第10章,结构、联合与位字段    介绍在用户自定义类型中数据的组织方式。    第11章,声明    介绍声明的一般语法、标识符链接,以及对象的存储周期。    第12章,动态内存管理    介绍标准库的动态内存管理函数,然后通过实现一个二叉树来展示这些函数的使用方法。    第13章,输入和输出    介绍C语言中输入与输出的概念,然后综述标准I/O链接库的使用方法。    第14章,多线程    介绍C11中多线程特性的使用方法,包括原子操作、线程间交流,以及线程存储。    第15章,预处理命令    介绍宏的定义与使用方法、条件式编译,以及其他所有预处理命令与操作。    第二部分    第二部分包括第16~18章,内容是C语言标准库。这部分综述了标准头文件,并包括了详细的函数使用参考。    第16章,标准头    介绍标准头文件的内容及用途。头文件包含了所有的标准库宏以及类型定义。    第17章,函数简介    通过函数的应用领域,综述标准库函数(例如,数学函数、时间与日期函数等)。    第18章,标准库函数    按照函数名的字母次序,详细介绍每个标准库函数,并使用示例展示每个函数的使用方法。    第三部分    第三部分包括第19~22章,介绍关于C语言编程工具的基础知识,包括:编译器、make工具集,以及调试器。这里所介绍的工具都属于GNU软件包。最后,以Eclipse IDE为例,介绍在C语言集成开发环境(IDE)中如何使用上述工具。    第19章,使用GCC编译C程序    介绍GCC编译器针对C语言程序员所提供的核心功能,GCC编译器是现今广泛使用的C语言编程工具。    第20章,使用make构建C程序    介绍如何使用make程序自动编译大型程序。    第21章,使用GDB调试C程序    介绍如何使用GNU调试器执行程序,以及如何分析程序的执行行为以找到逻辑错误。    第22章,使用IDE    介绍集成开发环境(IDE)的使用方法,IDE使得在C程序开发中可以统一、便利地访问所有工具。    推荐阅读    本书中许多地方都介绍了进一步提升编程能力建议阅读的参考资料,如果读者还需要更多的技术细节,可参阅一些资源站点,例如C语言标准化国际工作组织的官方主页(http://www.open-std.org/jtc1/sc22/wg14),其中提供了C语言标准最新版本的链接,以及该组织当前正在开展的项目。    如果读者的兴趣不仅限于了解C语言是什么、怎样使用,还想知道C语言背后的原理,WG14网站提供了一些关于C语言原理介绍的链接。这些文件介绍了在C语言标准化过程中的一些动机与限制。另外,如果想知道C语言最初是如何创建的,可以阅读C语言之父Dennis Ritchie的文章“The Development of the C Language”(https://www.bell-labs.com/usr/dmr/www/chist.html)。你也可以在他的贝尔实验室网站(https://www.bell-labs.com/usr/dmr/www/index.html)上找到该文章以及其他历史文章。    如果想了解C语言范畴以外的浮点数学的细节信息,可以阅读David Goldberg关于此方面的文献“What Every Computer Scientist Should Know About Floating-Point Arithmetic”,下载网址是:http://docs.sun.com/source/806-3568/ncg_goldberg.html。    本书约定    本书使用下列排版约定:    斜体    标示新的术语;指示文件名、文件扩展、URL、目录以及Unix工具。    等宽字体(constant width)    表示C源代码的所有元素:关键字、运算符、变量、函数、宏、类型、参数与字面量。也用于表示控制台命令与选项,以及这类命令的输出。    等宽粗体(constant width bold)    强调在代码示例中讨论的函数或语句。在编译器make及调试器部分,该字体表示用户键入的输入命令。    等宽斜体(constant width italic)    指示函数原型或占位符的参数,以替代你的值。    纯文本(plain text)    表示按键,例如回车键、Tab键,以及Ctrl键。    表示提示或建议。    表示普通注解。    表示警告或注意。    使用代码示例    补充材料(例如书中列举的代码示例、练习等)可从如下网址下载:https://github.com/hzbooks/c-in-a-nutshell-2E。    本书的目的是帮助你完成工作。一般情况下,你可以使用本书所提供的样例代码进行编程和文档撰写。不需要联系我们获得许可,除非重现代码的重要部分。例如,使用书中的一些代码段进行编写程序,无需获得许可。销售或发行来自O扲eilly图书的光盘实例,需要获得许可。引用本书和引用代码实例来解决问题,无需获得许可。从本书获取大量的样例代码到你的产品文档,需要获得许可。    我们感激你的署名,但不会强求。署名通常包含书名、作者、出版商和ISBN。例如: “C in a Nutshell, 2nd Edition by Peter Prinz and Tony Crawford (O扲eilly). Copyright 2016 Peter Prinz, Tony Crawford, 978-1-491-90475-6。”    如果你觉得你使用的代码示例超出正当使用或上面给出的权限,请随时与我们联系: permissions@oreilly.com。    Safari Books Online    Safari Books Online是一个点播式数字图书馆,它提供了来自全球在技术与商业方面著名作者所提供的专业知识内容,并以图书与视频形式进行传递。    技术专家、软件开发者、网站设计者,以及商业与创新专家,正在使用Safari Books Online作为他们的首选资源,以开展研究、解决问题、学习与认证培训。    Safari Books Online为企业、政府、学校以及个人提供了一系列的计划,并给出了对应的价格。    作为会员,您可以从该项目的数据库中访问数千图书、培训视频,以及出版前手稿。全球有数百家出版商作为Safari Books Online的内容提供商,其中包括O扲eilly Media,Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams,Que, Peachpit Press, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett, Course Technology。关于Safari Books Online的更多信息,请访问其网站(www.safaribooksonline.com)。    如何联系我们    如果你对本书有意见和问题,请联系出版商。    美国:    O'Reilly Media,Inc.    1005 Gravenstein Highway North    Sebastopol,CA 95472    中国:    北京市西城区西直门南大街2号成铭大厦C座807室(100035)    奥莱利技术咨询(北京)有限公司    我们为本书提供了网页,该网页上面列出了勘误表、范例和任何其他附加的信息。您可以访问如下网页获得:    http://bit.ly/C_Nutshell_2e    要询问技术问题或对本书提出建议,请发送电子邮件至:    bookquestions@oreilly.com    要获得更多关于我们的书籍、课程会议和新闻的信息,请参见我们的网站:    http://www.oreilly.com.cn    http://www.oreilly.com    致谢    感谢O'Reilly的每一位成员对本书所做的出色工作,尤其是我们的编辑Rachel Roumeliotis 与 Katie Schooling,他们全程指导了本书的出版。感谢我们的技术审校Matt Crawford、David Kitabjian、Chris LaPre、John C. Craig,以及Lo?c Pefferkorn,他们对手稿提出了许多宝贵的意见。还要感谢我们的产品编辑Kristen Brown,文字编辑Gillian McGarvey,他们全身心地对本书排版设计,使得本书精美而富有现代气息。最后,感谢Jonathan Gennick,他这些年一直不遗余力地推动着整个项目的实施。    Peter    首先,感谢Tony在本书写作过程中的出色合作。感谢我所有的朋友,我在创作本书时没有时间与他们相聚,他们一次次给予了理解与支持。最后,我要将本书献给我的女儿Vivian 与 Jeanette(如今她们都获得了计算机科学的博士学位),是她们坚定了我完成本书的信念。    Tony    感谢Peter,让我在本书写作过程中能够充分贡献出我的力量。

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网