作品简介

本书的原型思想和内容,发源于朱有鹏老师早些年的研发和学习经历,发展于后来数年的线下培训授课经历,并成熟于视频课程《C语言高级专题》(隶属于《朱有鹏老师嵌入式Linux核心课程》系列视频课程的第4部分)。本书正是基于这套视频课程的课件整理而来,参与各章节整理和编写的都是学习了视频课程的学生,由朱有鹏老师和张先凤老师检验并完善成书。这些参与编写的同学有的已经工作数年、有的则尚未走出大学校园。选择他们合作创作本书,就是为了告诉读者:做技术并不要求你天赋异禀,只需要你感兴趣、愿意去探索和练习,你也可以成功。

朱有鹏,互联网课程《朱老师物联网大讲堂》创始人、杰出讲师;51CTO学院杰出讲师、CSDN技术专家、国内物联网教育领域先驱;具有大型企业级项目研发经验和丰富的教学经验。授课风趣幽默、条理清晰、通俗易懂,对知识有自己独到见解。能举一反三,发散学生的思维,指引学生发掘适合自己的学习方法。

张先凤,《朱老师物联网大讲堂》联合创始人、杰出讲师;长期从事企业级物联网项目研发和物联网相关教学工作,对物联网各关键环节技术均有所涉猎,对物联网未来发展和教学有着独特见解,立志长期扎根物联网相关研发和教学工作。

作品目录

  • 前言
  • 参与本书整理和编写的学生
  • 第1章 C语言与内存
  • 1.1 引言
  • 1.2 计算机程序运行的目的
  • 1.3 位、字节、半字、字的概念和内存位宽
  • 1.4 内存编址和寻址、内存对齐
  • 1.5 C语言如何操作内存
  • 1.6 内存管理之结构体
  • 1.7 内存管理之栈(stack)
  • 1.8 内存管理之堆
  • 课后题
  • 第2章 C语言位操作
  • 2.1 引言
  • 2.2 常用位操作符
  • 2.3 位操作与寄存器
  • 2.4 位运算构建特定二进制数
  • 2.5 位运算实战演练1
  • 2.6 位运算实战演练2
  • 2.7 技术升级:用宏定义来完成位运算
  • 课后题
  • 第3章 指针才是C语言的精髓
  • 3.1 引言
  • 3.2 指针到底是什么
  • 3.3 理解指针符号
  • 3.4 野指针与段错误问题
  • 3.5 const关键字与指针
  • 3.6 深入学习数组
  • 3.7 指针与数组的天生“姻缘”
  • 3.8 指针类型与强制类型转换
  • 3.9 指针、数组与sizeof运算符
  • 3.10 指针与函数传参
  • 3.11 输入型参数与输出型参数
  • 课后题
  • 第4章 C语言复杂表达式与指针高级应用
  • 4.1 引言
  • 4.2 指针数组与数组指针
  • 4.3 函数指针与typedef
  • 4.4 函数指针实战1——用函数指针调用执行函数
  • 4.5 函数指针实战2——结构体内嵌函数指针实现分层
  • 4.6 再论typedef
  • 4.7 二维数组
  • 课后题
  • 第5章 数组&字符串&结构体&共用体&枚举
  • 5.1 引言
  • 5.2 程序中的内存从哪里来
  • 5.3 堆
  • 5.4 内存中的各个段
  • 5.5 C语言的字符串类型
  • 5.6 字符串和字符数组的细节
  • 5.7 结构体概述
  • 5.8 结构体的对齐访问
  • 5.9 offsetof宏与container_of宏
  • 5.10 共用体(union)
  • 5.11 大小端模式
  • 5.12 枚举enum
  • 课后题
  • 第6章 C语言的预处理、函数和函数库
  • 6.1 引言
  • 6.2 C语言为什么需要编译链接
  • 6.3 预处理详解
  • 6.4 常见的预处理详解
  • 6.5 函数的本质
  • 6.6 函数的基本使用
  • 6.7 递归函数
  • 6.8 库函数
  • 6.9 常见的库函数之字符串函数
  • 6.10 常见的库函数之数学库函数
  • 6.11 制作静态链接库并使用
  • 6.12 制作动态链接库并使用
  • 课后题
  • 第7章 存储类&作用域&生命周期&链接属性
  • 7.1 引言
  • 7.2 概念解析
  • 7.3 Linux下C程序的内存映像
  • 7.4 存储类相关的关键字1
  • 7.5 存储类相关的关键字2
  • 7.6 作用域详解
  • 7.7 变量的生命周期
  • 7.8 链接属性
  • 课后题
  • 第8章 C语言关键细节讨论
  • 8.1 引言
  • 8.2 操作系统概述
  • 8.3 main函数返回值
  • 8.4 argc、argv与main函数的传参
  • 8.5 void类型的本质
  • 8.6 C语言中的NULL
  • 8.7 运算中的临时匿名变量
  • 8.8 顺序结构
  • 8.9 程序调试
  • 课后题
  • 第9章 链表&状态机&多线程
  • 9.1 引言
  • 9.2 链表的引入
  • 9.3 单链表的实现之构建第一个节点
  • 9.4 单链表的实现之从尾部插入节点
  • 9.5 单链表的算法之从头部插入节点
  • 9.6 单链表的算法之遍历节点
  • 9.7 单链表的算法之删除节点
  • 9.8 单链表的算法之逆序
  • 9.9 双链表的引入和基本实现
  • 9.10 双链表的算法之插入节点
  • 9.11 双链表的算法之遍历
  • 9.12 双链表的算法之删除节点
  • 9.13 Linux内核链表
  • 9.14 内核链表的基本算法和使用简介
  • 9.15 什么是状态机
  • 9.16 用C语言实现简单的状态机
  • 9.17 多线程简介
  • 课后题
  • 第10章 程序员和编译器的暧昧
  • 10.1 引言
  • 10.2 编程工作的演进史
  • 10.3 程序员、编译器和CPU之间的三角恋
  • 10.4 像编译器一样思考吧——理论篇
  • 10.5 像编译器一样思考吧——实战篇
  • 课后题
  • 附录 答案
  • 第1章 课后题答案
  • 第2章 课后题答案
  • 第3章 课后题答案
  • 第4章 课后题答案
  • 第5章 课后题答案
  • 第6章 课后题答案
  • 第7章 课后题答案
  • 第8章 课后题答案
  • 第9章 课后题答案
  • 第10章 课后题答案
  • 欢迎来到异步社区!
  • 异步社区的来历
  • 社区里都有什么?
  • 灵活优惠的购书
  • 社区里还可以做什么?
  • 加入异步
展开全部