欢迎来到中国铁道出版社有限公司官网!
$itImage.title$
$itImage.title$
$itImage.title$

C 语言从新手到高手

书      号:9787113263188

丛  书 名:

作      者:关淞元

译      者:

开      本:小16开

装      帧:平装

正文语种:中文

出  版 社:中国铁道出版社

定      价:79

  • 内容简介

    本书的主要特色是根据作者多年的开发架构经验编
    写,凝聚了一个菜鸟程序员慢慢成长为架构师的程序设计之路,书中包含很多开发
    设计实例,以及作者对于C 语言和设计模式的独特见解,以及如何运用Cache 和
    NUMA 等技术来优化程序执行效率,随着多核技术的蓬勃发展,本书也涉及C 语言
    在多核开发下的优势和劣势。
    本书共分四大部分。
    第一部分新手篇:第1~6 章,着重介绍C 语言基础语法。
    第二部分进阶篇:主要介绍C 语言的数据类型、预处理器、编译原理,通过实
    例阐述C 语言的魅力。
    第三部分实战篇:包含C 语言的经典数据结构和通用设计模式等,以及Linux
    下程序调试的方法。
    第四部分高手篇:介绍如何进行程序优化、Cache 利用、NUMA 技术、多核技
    术等。
  • 前言

    一、编写初衷
    目前各种编程语言百花齐放,但是C语言仍然是程序执行效率很高的语言之一,
    也是贴近底层硬件的语言之一,笔者希望通过本书能让大家了解C 语言编程的本质
    以及设计精髓,而不是简简单单只将C 语言当成一种工具。
    书中内容来源于笔者从业多年的学习和实战经验,希望分享给更多有志于通过
    技术改变生活的人。
    通过本书的讲解帮助更多的程序开发者提升自身的计算机思维,并明确自己后
    续的技术发展路线。
    二、内容亮点
    和市面上同类图书相比,本书的主要特色是根据作者多年的开发架构经验编
    写,凝聚了一个菜鸟程序员慢慢成长为架构师的程序设计之路,书中包含很多开发
    设计实例,以及作者对于C 语言和设计模式的独特见解,以及如何运用Cache 和
    NUMA 等技术来优化程序执行效率,随着多核技术的蓬勃发展,本书也涉及C 语言
    在多核开发下的优势和劣势。
    本书共分四大部分。
    第一部分新手篇:第1~6 章,着重介绍C 语言基础语法。
    第二部分进阶篇:主要介绍C 语言的数据类型、预处理器、编译原理,通过实
    例阐述C 语言的魅力。
    第三部分实战篇:包含C 语言的经典数据结构和通用设计模式等,以及Linux
    下程序调试的方法。
    第四部分高手篇:介绍如何进行程序优化、Cache 利用、NUMA 技术、多核技
    术等。
    前 言Foreword
    II C 语言从新手到高手
    三、读者对象
    本书将C 语言拟人化,通过一个人的慢慢成长过程来阐述C 语言学习的进阶
    之路。
    本书既适用于没有经验的编程爱好者,同样适用于对C 语言有一定经验的使用
    者,更适合刚刚走出大学校门的读者使用,希望通过对本书的学习完成由学生到一
    个职业编程人员的快速思维转换。
    通过本书,读者可以在短期内对C 语言有全面的了解,书中包含了大量可执行
    的实例供读者学习,帮助读者具备实际上手编码能力,以及一定的程序设计和优化
    能力。
    四、致谢
    在本书的编写中,首先感谢公司的领导和业内的朋友,他们对本书的策划提出
    了大量的宝贵意见和建议。
    感谢我的妻子孙苗苗,她在我漫长的写作过程中对儿子无微不至的照顾,使我
    免除了后顾之忧。
    感谢我的儿子果果,在本书的构思过程中迎来了这个小生命,他使得我有了更
    多写作的灵感和动力(本书拟人化的写作手法即来源于此)。
    感谢我的父母,他们长久以来对我的培养、鼓励及支持,才使得我有能力以及
    精力投入到写作过程中。
    感谢中国铁道出版社有限公司,因为有他们,才使得本书最终面世。
    由于作者水平有限,书中错误之处在所难免,恳请专家和读者批评指正,联系
    邮箱:boyteam@163.com。
    最后以乔布斯的经典名句结尾:“Stay hungry, Stay foolish.”
  • 目录

    第一篇新手篇
    第 1 章 C 语言概述
    1.1 C 语言的前世今生............................................................................................... 2
    1.2 C 语言的优势与劣势........................................................................................... 3
    1.3 C 语言的当前标准............................................................................................... 4
    1.4 C 语言的编程机制............................................................................................... 4
    第2 章 C 语言的骨骼——基础数据类型
    2.1 常量与变量........................................................................................................... 6
    2.1.1 常量.......................................................................................................... 6
    2.1.2 变量.......................................................................................................... 8
    2.2 关键字和保留标识符.......................................................................................... 9
    2.3 整数类型............................................................................................................. 11
    2.4 浮点类型............................................................................................................. 11
    2.5 字符和字符串类型............................................................................................13
    2.6 类型之间的转换................................................................................................14
    2.7 程序注释.............................................................................................................18
    第3 章 C 语言的肉身——运算符
    3.1 算术运算符.........................................................................................................20
    3.2 赋值运算符.........................................................................................................213.3 逻辑运算符.........................................................................................................21
    3.4 移位运算符.........................................................................................................22
    3.5 关系运算符.........................................................................................................23
    3.6 增量运算符.........................................................................................................24
    3.7 位运算符.............................................................................................................25
    3.8 条件运算符.........................................................................................................26
    3.9 逗号运算符.........................................................................................................27
    3.10 运算符的优先级..............................................................................................28
    第4 章 C 语言的血液——控制流
    4.1 顺序流.................................................................................................................30
    4.2 条件分支流.........................................................................................................31
    4.3 循环控制流.........................................................................................................35
    4.4 输入输出流.........................................................................................................38
    4.4.1 scanf/printf 函数.....................................................................................38
    4.4.2 getchar/putchar 函数..............................................................................40
    4.4.3 gets/puts 函数.........................................................................................41
    4.5 语句嵌套.............................................................................................................42
    第5 章 C 语言的灵魂——函数
    5.1 函数定义.............................................................................................................44
    5.2 函数声明.............................................................................................................45
    5.3 函数参数.............................................................................................................46
    5.4 函数调用.............................................................................................................48
    5.5 函数递归.............................................................................................................52
    5.6 可变参数列表.....................................................................................................54
    第6 章 丫丫学步——构建第一个程序
    6.1 main 函数............................................................................................................56
    6.2 程序风格.............................................................................................................58
    6.3 第一个C 程序....................................................................................................60
    6.4 编译执行.............................................................................................................61第二篇 进阶篇
    第 7 章 成长的烦恼——数组和指针
    7.1 一维数组.............................................................................................................64
    7.2 多维数组.............................................................................................................65
    7.3 变长数组.............................................................................................................66
    7.4 指针与地址.........................................................................................................68
    7.5 指针数组.............................................................................................................71
    7.6 指向函数的指针................................................................................................73
    7.7 指向指针的指针................................................................................................74
    7.8 指针和数组的区别............................................................................................75
    第8 章 成长的积累——结构体、联合体及其他数据形式
    8.1 结构体基础知识................................................................................................77
    8.2 结构的存储与对齐............................................................................................79
    8.3 结构数组.............................................................................................................84
    8.4 指向结构的指针................................................................................................85
    8.5 结构体自引用.....................................................................................................87
    8.6 联合体基础知识................................................................................................88
    8.7 枚举类型.............................................................................................................90
    8.8 位字段.................................................................................................................93
    8.9 typedef 简介........................................................................................................95
    第9 章 成长的惊喜——预处理器
    9.1 宏定义.................................................................................................................98
    9.2 文件包含...........................................................................................................102
    9.3 条件编译...........................................................................................................103
    第10 章 成人礼——第一次构建多文件工程
    10.1 多源文件编译................................................................................................107
    10.2 动态库和静态库............................................................................................ 11310.2.1 静态库................................................................................................ 114
    10.2.2 动态库................................................................................................ 115
    第三篇实战篇
    第 11 章 骨骼的发育——经典数据结构
    11.1 栈.....................................................................................................................120
    11.2 链表.................................................................................................................123
    11.3 队列.................................................................................................................126
    11.4 树.....................................................................................................................129
    11.5 堆.....................................................................................................................134
    11.6 散列表.............................................................................................................137
    11.7 图.....................................................................................................................139
    11.7.1 邻接矩阵............................................................................................141
    11.7.2 邻接表................................................................................................142
    11.7.3 十字链表............................................................................................142
    11.7.4 邻接多重表........................................................................................143
    11.8 一个具体的例子——协议识别引擎............................................................144
    第12 章 社会经验的积累——经典设计模式
    12.1 程序设计理念................................................................................................151
    12.2 设计模式原则................................................................................................152
    12.3 单件模式.........................................................................................................154
    12.4 工厂模式.........................................................................................................157
    12.5 抽象工厂模式................................................................................................158
    12.6 创建者模式.....................................................................................................161
    12.7 原型模式.........................................................................................................162
    12.8 适配器模式.....................................................................................................163
    12.9 装饰器模式.....................................................................................................164
    12.10 代理模式.......................................................................................................166
    12.11 外观模式.......................................................................................................167
    12.12 桥接模式.......................................................................................................169
    12.13 组合模式.......................................................................................................170
    目 录 V
    12.14 享元模式.......................................................................................................172
    12.15 策略模式.......................................................................................................174
    12.16 模板方法模式..............................................................................................175
    12.17 观察者模式...................................................................................................177
    12.18 迭代器模式...................................................................................................179
    12.19 责任链模式...................................................................................................180
    12.20 命令模式.......................................................................................................182
    12.21 备忘录模式...................................................................................................183
    12.22 状态模式.......................................................................................................185
    12.23 访问者模式...................................................................................................186
    12.24 中介者模式...................................................................................................188
    12.25 解释器模式...................................................................................................190
    第13 章 成长的挫折——再论程序调试
    13.1 断言.................................................................................................................194
    13.2 万能的打印.....................................................................................................197
    13.3 GDB 调试浅谈...............................................................................................199
    13.3.1 基础命令............................................................................................199
    13.3.2 进阶多线程命令................................................................................205
    13.3.3 调试core 文件...................................................................................206
    13.4 符号表与反汇编............................................................................................210
    13.5 core 文件的配置.............................................................................................212
    第14 章 适应社会——可移植性
    14.1 为什么需要可移植........................................................................................214
    14.2 如何设计可移植的数据结构........................................................................215
    14.3 如何设计可移植的程序................................................................................217
    第四篇高手篇
    第 15 章 找出自身的不足——性能调试
    15.1 程序Cycle 的意义.........................................................................................220
    VI C 语言从新手到高手
    15.2 性能测试工具的使用....................................................................................221
    15.3 变量的优化.....................................................................................................224
    15.4 高性能函数.....................................................................................................228
    15.5 嵌入式汇编.....................................................................................................234
    15.6 编译优化.........................................................................................................237
    第16 章 做事需未雨绸缪——Cache 技术
    16.1 为什么要使用Cache .....................................................................................241
    16.2 Cache 有多少级.............................................................................................242
    16.3 Cache Line 的介绍.........................................................................................244
    16.4 与Cache 结合的CPU 指令..........................................................................246
    16.5 Cache 的淘汰策略.........................................................................................250
    16.6 让程序爱上Cache .........................................................................................252
    第17 章 找到亲近的人与事——NUMA 技术
    17.1 NUMA 简介...................................................................................................254
    17.2 NUMA 存储管理...........................................................................................257
    17.3 NUMA 相关工具...........................................................................................258
    17.4 NUMA 读写实测...........................................................................................260
    17.5 让程序爱上NUMA.......................................................................................261
    第18 章 社会更新换代——大页技术
    18.1 大页简介.........................................................................................................262
    18.2 Linux 如何配置大页......................................................................................263
    18.3 简述Hugetlbfs 实现.......................................................................................266
    18.4 程序如何使用大页........................................................................................269
    第19 章 自我修炼——多线程技术
    19.1 进程与线程的区别........................................................................................271
    19.2 多线程编程.....................................................................................................275
    19.2.1 线程的创建和结束............................................................................275
    19.2.2 线程同步............................................................................................277
    目 录 VII
    19.2.3 线程互斥............................................................................................281
    19.2.4 定义线程独有变量............................................................................283
    19.3 CPU 亲和性....................................................................................................284
    19.3.1 RTC 模式............................................................................................287
    19.3.2 Pipeline 模式......................................................................................288
    19.4 多线程调试.....................................................................................................289
    附录A 术语表
    附录 B 操作符优先级表
    附录 C Linux 信号表
  • 作者介绍

    关淞元:毕业于吉林大学计算机科学与技术学院,硕士学历,资深架构专家,有10余年系统架构设计,软件开发以及研发管理经验;曾发表过多篇学术论文以及专利,主要涉及数字通信领域、网络安全领域、移动通信领域以及安全领域;尤其擅长C语言算法及性能优化,曾主持或参与过NGFW(下一代防火墙)的研发、IPS(入侵检测系统)的研发,DDOS(分布式拒绝攻击)的架构设计和研发、DPI(深度报文检测)的架构设计和研发,内容还原的架构设计和研发等。目前在某公司出任首席架构师,主持国外大型安全项目的总体架构设计,以及国家部委项目的总体架构设计。
  • 编辑推荐

    配套赠送书中案例源代码
    一本带你轻松入门、直接上岗的实操手册

    实战派架构师 倾力之作

    希望分享给更多有志于通过技术改变生活的人
  • 书评书荐

  • 附件下载

图书推荐