书籍详情
《C语言入门经典》[53M]百度网盘|亲测有效|pdf下载
  • C语言入门经典

  • 出版社:京东图书自营旗舰店
  • 出版时间:2021-11
  • 热度:11065
  • 上架时间:2024-06-30 09:38:03
  • 价格:0.0
书籍下载
书籍预览
免责声明

本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正

内容介绍

产品特色

编辑推荐

目前市面上关于 C 语言学习的图书很多,本书以深入浅出的方法介绍 C 语言中抽象的语法和

算法,非常适合初学者编程入门学习。同时,本书知识结构清晰,内容详细,也可作为有经验的

程序员的枕边书,随时可以查阅解惑。在 IT 领域,我想大多数程序员精英都读过 Ivor Horton 的

图书,本书作者 Ivor Horton 是世界著名的计算机图书作家,帮助无数程序员步入编程的殿堂。时

间推移、日月更替,作为 C 语言入门的经典图书,《C 语言入门经典》已历经多次版本迭代,译

者翻译的是《C 语言入门经典》的第 6 版。

科技的进步使人们的生活变得更加丰富多彩,但是编程的学习却是比较枯燥的,因此也有很

多编程初学者“无疾而终”。此处译者想给编程初学者几个小小的建议,希望对读者的编程学习生

涯有所帮助。

1. 兴趣是最好的老师,但大部分学习者对编程的学习可能一开始并没有很大的兴趣。那就需

要体会编程带来的成就感,例如成功地执行了一个程序,成功地找到了一个 bug,都会让人感觉

很有成就,需要享受这种编程带来的成就感。

2. 遇到问题时不要轻言放弃,可以先尝试自己找出问题进行分析。如果不行,就网页搜索看

看有没有解决方案,还是不行,可以询问认识的朋友。一般经历这几个过


内容简介

主要内容:

介绍C编程语言;

使用C语言编程,开启编程之旅;

使用循环、数组、字符串、文本、指针、函数、VO等使用字符串和文本编写应用程序代码;

程序的有效结构;

处理数据、文件、工具等


作者简介

German Gonzalez-Morris是一名C/C++、Java和开发不同应用程序容器的软件设计师/工程师,特别专注在WebLogic服务器方面的工作。他还从事开发不同的应用程序,包括JEE/Spring/Python。他的工作领域还包括OOP、Java/JEE、Python、设计模式、算法、Spring Core/MVC/Security和微服务。German曾在消息传递性能、RESTful API和事务系统方面工作过。


Ivor Horton是一家从事咨询业的自营职业者,撰写编程方面的教程。他在IBM工作多年。Ivor在IBM的工作包括在各种机器上用大多数语言(如汇编语言和高级语言)编程、实时编程以及设计和实现实时闭环工业控制系统。他在培训工程师和其他专家学习编程(Fortran、PL/1、APL等)方面有着丰富的经验。Ivor是机械、工艺和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。


目录

目 录


第1章 C语言编程 1

1.1 C语言 1

1.2 标准库 2

1.3 学习C语言 2

1.4 创建C程序 2

1.4.1 编辑 2

1.4.2 编译 3

1.4.3 链接 3

1.4.4 执行 4

1.5 创建第一个程序 5

1.6 编辑第一个程序 5

1.7 处理错误 6

1.8 剖析一个简单的程序 7

1.8.1 注释 7

1.8.2 预处理指令 8

1.8.3 定义main()函数 9

1.8.4 关键字 9

1.8.5 函数体 9

1.8.6 输出信息 11

1.8.7 参数 11

1.8.8 控制符 11

1.8.9 三字母序列 13

1.9 预处理器 13

1.10 用C语言开发程序 14

1.10.1 了解问题 14

1.10.2 详细设计 14

1.10.3 实施 15

1.10.4 测试 15

1.11 函数及模块化编程 15

1.12 常见错误 18

1.13 要点 19

1.14 小结 19

1.15 习题 19

第2章 编程初步 21

2.1 计算机的内存 21

2.2 什么是变量 23

2.3 存储整数的变量 24

2.3.1 变量的使用 28

2.3.2 变量的初始化 30

2.4 变量与内存 35

2.4.1 带符号的整数类型 36

2.4.2 无符号的整数类型 36

2.4.3 指定整数常量 37

2.5 使用浮点数 39

2.6 浮点数变量 40

2.6.1 使用浮点数完成除法运算 41

2.6.2 控制输出中的小数位数 42

2.6.3 控制输出的字段宽度 42

2.7 较复杂的表达式 43

2.8 定义命名常量 46

2.8.1 极限值 48

2.8.2 sizeof运算符 50

2.9 选择正确的类型 51

2.10 强制类型转换 54

2.10.1 自动转换类型 55

2.10.2 隐式类型转换的规则 55

2.10.3 赋值语句中的隐式类型转换 56

2.11 再谈数值数据类型 57

2.11.1 字符类型 57

2.11.2 字符的输入输出 58

2.11.3 枚举 61

2.11.4 存储布尔值的变量 63

2.12 赋值操作的op=形式 64

2.13 数学函数 65

2.14 设计一个程序 66

2.14.1 问题 66

2.14.2 分析 66

2.14.3 解决方案 68

2.15 小结 72

2.16 练习 73





第9章 函数再探 313

9.1 函数指针 313

9.1.1 声明函数指针 313

9.1.2 通过函数指针调用函数 314

9.1.3 函数指针的数组 316

9.1.4 作为变元的函数指针 318

9.2 函数中的变量 321

9.2.1 静态变量:函数内部的追踪 321

9.2.2 在函数之间共享变量 323

9.3 调用自己的函数:递归 325

9.4 变元个数可变的函数 328

9.4.1 复制va_list 331

9.4.2 长度可变的变元列表的基本规则 331

9.5 main()函数 332

9.6 结束程序 333

9.6.1 abort()函数 333

9.6.2 exit()和atexit()函数 334

9.6.3 _Exit()函数 334

9.6.4 quick_exit()和at_quick_exit()函数 334

9.7 提高性能 335

9.7.1 内联声明函数 335

9.7.2 使用restrict关键字 335

9.7.3 _Noreturn函数限定符 336

9.8 设计程序 336

9.8.1 问题 336

9.8.2 分析 337

9.8.3 解决方案 338

9.9 小结 352

9.10 习题 352

第10章 基本输入和输出操作 355

10.1 输入和输出流 355

10.2 标准流 356

10.3 键盘输入 356

10.3.1 格式化键盘输入 356

10.3.2 输入格式控制字符串 357

10.3.3 输入格式字符串中的字符 362

10.3.4 输入浮点数的各种变化 363

10.3.5 读取十六进制和八进制值 364

10.3.6 用scanf_s()读取字符 366

10.3.7 从键盘上输入字符串 367

10.3.8 单个字符的键盘输入 368

10.4 屏幕输出 373

10.4.1 使用printf_s()的格式化输出 373

10.4.2 转义序列 375

10.4.3 整数输出 376

10.4.4 输出浮点数 378

10.4.5 字符输出 379

10.5 其他输出函数 381

10.5.1 屏幕的非格式化输出 381

10.5.2 数组的格式化输出 382

10.5.3 数组的格式化输入 382

10.6 小结 383

10.7 习题 383

第11章 结构化数据 385

11.1 数据结构:使用struct 385

11.1.1 定义结构类型和结构变量 386

11.1.2 访问结构成员 387

11.1.3 未命名的结构 390

11.1.4 结构数组 390

11.1.5 表达式中的结构成员 393

11.1.6 结构指针 393

11.1.7 为结构动态分配内存 394

11.2 再探结构成员 396

11.2.1 将一个结构作为另一个结构的成员 396

11.2.2 声明结构中的结构 397

11.2.3 将结构指针用作结构成员 399

11.2.4 双向链表 403

11.2.5 结构中的位字段 406

11.3 结构与函数 407

11.3.1 结构作为函数的变元 407

11.3.2 结构指针作为函数变元 408

11.3.3 作为函数返回值的结构 409

11.3.4 二叉树 414

11.4 共享内存 422

11.5 设计程序 427

11.5.1 问题 427

11.5.2 分析 427

11.5.3 解决方案 427

11.6 小结 440

11.7 习题 440

第12章 处理文件 441

12.1 文件的概念 441

12.1.1 文件中的位置 442

12.1.2 文件流 442

12.2 文件访问 442

12.2.1 打开文件 443

12.2.2 缓存文件操作 445

12.2.3 文件重命名 446

12.2.4 关闭文件 446

12.2.5 删除文件 447

12.3 写入文本文件 447

12.4 读取文本文件 448

12.5 在文本文件中读写字符串 451

12.6 格式化文件的输入输出 455

12.6.1 格式化文件输出 455

12.6.2 格式化文件输入 456

12.7 错误处理 458

12.8 再探文本文件操作模式 459

12.9 freopen_s()函数 460

12.10 二进制文件的输入输出 461

12.10.1 以二进制模式打开文件 462

12.10.2 写入二进制文件 462

12.10.3 读取二进制文件 463

12.11 在文件中移动 468

12.11.1 文件定位操作 469

12.11.2 找出文件中的当前位置 469

12.11.3 在文件中设定位置 470

12.12 使用临时文件 476

12.12.1 创建临时文件 476

12.12.2 创建唯一的文件名 477

12.13 更新二进制文件 478

12.13.1 修改文件的内容 483

12.13.2 从键盘输入创建记录 484

12.13.3 将记录写入文件 485

12.13.4 从文件中读取记录 486

12.13.5 写入文件 486

12.13.6 列出文件内容 487

12.13.7 更新已有的文件内容 488

12.14 文件打开模式小结 495

12.15 设计程序 495

12.15.1 问题 495

12.15.2 分析 495

12.15.3 解决方案 496

12.16 小结 501

12.17 习题 501

第13章 预处理器和调试 503

13.1 预处理 503

13.1.1 在程序中包含头文件 503

13.1.2 定义自己的头文件 504

13.1.3 管理多个源文件 504

13.1.4 外部变量 504

13.1.5 静态函数 505

13.1.6 替换程序源代码 505

13.2 宏 506

13.2.1 看起来像函数的宏 507

13.2.2 字符串作为宏参数 508

13.2.3 在宏展开式中结合两个

变元 509

13.3 多行上的预处理器指令 510

13.3.1 预处理器逻辑指令 510

13.3.2 条件编译 510

13.3.3 测试多个条件 511

13.3.4 取消定义的标识符 511

13.3.5 测试标识符的指定值的

指令 511

13.3.6 多项选择 512

13.3.7 标准预处理宏 513

13.3.8 通用宏 514

13.4 调试方法 515

13.4.1 集成的调试器 515

13.4.2 调试阶段的预处理器 515

13.4.3 断言 519

13.5 日期和时间函数 522

13.5.1 获取时间值 522

13.5.2 获取日期 525

13.5.3 确定某一天是星期几 529

13.6 小结 532

13.7 习题 532

第14章 高级专用主题 533

14.1 使用国际字符集 533

14.1.1 理解Unicode 533

14.1.2 设置区域 534

14.1.3 宽字符类型wchar_t 535

14.1.4 宽字符串的操作 537

14.1.5 宽字符的文件流操作 540

14.1.6 存储Unicode字符的固定大小类型 541

14.2 用于可移植性的专用整数类型 545

14.2.1 固定宽度的整型 545

14.2.2 最小宽度的整型 545

14.2.3 最大宽度的整型 546

14.3 复数类型 546

14.3.1 复数基础 546

14.3.2 复数类型和操作 547

14.4 用线程编程 550

14.4.1 创建线程 550

14.4.2 退出线程 551

14.4.3 把一个线程连接到另一个线程上 552

14.4.4 挂起线程 555

14.4.5 管理线程对数据的访问 555

14.5 小结 562

附录A 计算机中的数学知识 563

附录B ASCII字符代码定义 571

附录C C语言中的保留字 575

附录D 输入输出格式说明符 577

附录E 标准库头文件 583


前言/序言

前 言





欢迎使用《C语言入门经典(第6版)》,研读《C语言入门经典(第6版)》,你可以成为一位称职的C语言程序员。从许多方面来说,C语言都是学习程序设计的理想起步语言。C语言很简洁,因此不必学习大量的语法便能够开始编写真正的应用程序。除了简明易学以外,它还是一门功能非常强大的语言,并被专业人士广泛应用在各种领域。C语言的强大之处主要体现在,它能够应用于各类层次的开发中;从设备驱动程序和操作系统组件到大规模应用程序,它都能胜任。此外,C语言还适用于较新的手机应用程序开发。

几乎所有计算机都包含C语言编译器,因此,当你学会了C语言,就可以在任何环境下进行编程。最后一点,掌握C语言可以为理解面向对象的C++语言奠定良好的基础。

在作者眼中,有抱负的程序员必将面对三重障碍,即掌握遍布程序设计语言中的各类术语、理解如何使用语言元素(而不仅仅只是知道它们的概念),以及领会如何在实际场景中应用该语言。《C语言入门经典(第6版)》的目的就是将这些障碍降到最低限度。

术语是专业人士及优秀业余爱好者之间的交流必不可少的,因此有必要掌握它们。《C语言入门经典(第6版)》将确保你理解这些术语,并自如地在各种环境下使用它们。这样才能更有效地使用大多数软件产品附带的文档,且能轻松地阅读和学习大部分程序设计语言相关的著作。

理解语言元素的语法和作用固然是学习C语言过程中的一个重要部分,但认识语言特性如何工作及应用同等重要。《C语言入门经典(第6版)》不仅采用了代码片段,还在每个章节中使用一些实际应用示例展示语言特性如何应用于特定的问题。这些示例提供了实践的基础,读者可以通过改动代码观察修改后的结果。

理解特定背景下的程序设计不只是应用个别语言元素。为了帮助读者理解它们,《C语言入门经典(第6版)》大部分章节之后都给出了一个较复杂的应用程序,以应用本章之前学到的知识。这些程序可以帮助你获得开发应用程序的能力与信心,了解如何组合以及更大范围地应用语言元素。最重要的是,它们能让你了解设计实际应用程序与管理实际代码会碰到的问题。

不管学习什么程序设计语言,有几件事情都要意识到。首先,虽然要学的东西很多,但是掌握它们之后,你就会有极大的成就感;其次,学习的过程很有趣,你会深深地体会到这点;第三,只有通过动手实践才能学会编程,这也是《C语言入门经典(第6版)》贯彻的思想。最后,在学习的过程中,肯定会时不时犯许多错误和感到沮丧。当觉得自己完全停滞时,你要做的就是坚持。最终你一定会体验到成功的喜悦,并且回顾时,你会觉得它也并没有你当初想象的那么难。

如何使用《C语言入门经典(第6版)》

作者认为动手实践是学习编程最好的方法,很快你就会编写第一个程序了。每一章都会有几个将理论应用于实践的程序,它们也是《C语言入门经典(第6版)》的核心所在。建议读者手工输入并运行书中的示例,因为手工输入可以极大地帮助记忆语言元素。此外,你还应当尝试解决每章末尾的所有练习题。当你第一次将一个程序运行成功,尤其是在解决自己的问题后,你会有很大的成就感并感觉到惊人的进步,那时你一定会觉得一切都值得。

刚开始,学习的进展不会太快。不过随着逐渐深入,你的学习进度会越来越快。每一章都会涉及许多基础知识,因此在学习新的内容之前,需要花些时间确保理解前面学习过的所有知识。实践各部分的代码,并尝试实现自己的想法,这是学习程序设计语言的一个重要部分。尝试修改书中的程序,看看还能让它们做些什么,那才是有趣之处。不要害怕尝试,如果某些地方不太明白,尝试输入一些变体,看看会出现什么情况。出错并没什么大不了,你会从出错中学到很多知识。一个不错的方法是通读每一章,了解各章的范围,然后回过头来过一遍所有的示例。

你可能会觉得某些章末尾的练习题非常难。如果第一次没有完全搞明白,不必担心。之所以第一次觉得困难是因为它们通常都是将你所学的知识应用到了相对复杂的问题中。如果你实在觉得困难,那么可以略过它们继续学习下一章,然后再回过头来研究这些程序。你甚至可以阅读完整《C语言入门经典(第6版)》再考虑它们。尽管如此,如果你能完成练习,就说明你取得了真正的进步。

《C语言入门经典(第6版)》读者对象

《C语言入门经典(第6版)》的目的是教会读者如何尽可能简单快速地编写有用的程序。在阅读完全书后,读者会完全了解C语言编程。这本教程面向的是那些之前编过一些程序,了解背后的概念,并且希望通过学习C语言进一步扩展知识的读者。尽管如此,《C语言入门经典(第6版)》并未假设读者拥有先前的编程知识,因此如果你刚刚接触编程,《C语言入门经典(第6版)》依然是你的不错选择。

使用《C语言入门经典(第6版)》的条件

要使用《C语言入门经典(第6版)》,你需要一台安装C编译器和库的计算机以执行书中的示例,以及一个程序文本编译器用于创建源代码文件。你使用的编译器应支持目前C语言国际标准C17(ISO/IEC 9899:2011,是C11的错误修复版本)。你还需要一个用于创建和修改代码的编辑器,可以采用纯文本编辑器(如记事本或vi)创建源文件。不过,采用专为编辑C语言代码设计的编辑器会更有帮助。

以下是作者推荐的两款C语言编译器,均为免费软件。

● GNU C编译器(GCC),可从www.gnu.org下载,它支持多种不同的操作系统环境。

● 面向Microsoft Windows的Pelles C编译器,可从www.smorgasbordet.com/pellesc/下载,它提供了一个非常棒的集成开发环境(IDE)。

《C语言入门经典(第6版)》采用的约定

《C语言入门经典(第6版)》的文本和布局采用了许多不同的样式,以便区分各种不同的信息。大多数样式表达的含义都很明显。程序代码样式如下:

int main(void)

{ printf("Beginning C\n");

return 0;

}

如果代码片段是从前面的实例修改而来,那么修改过的代码行就用粗体显示,如下所示。

i int main(void)

{

printf("Beginning C by Ivor Horton\n");

return 0;

}

当代码出现在文本中时,它的样式会有所不同,如double。

程序代码中还使用了各种“括号”。《C语言入门经典(第6版)》中称()为圆括号,{}为花括号,[]为方括号。