C语言编程魔法书:基于C11标准
前言
第一篇 预备知识篇
第1章C魔法概览 /2
1.1 例说编程语言 2
1.2 用C语言编程的基本注意事项 6
1.3 主流C语言编译器介绍 8
1.4 关于GNU规范的语法扩展 10
1.5 用C语言构建一个可执行程序的流程 11
1.6 本章小结 12
第2章学习C语言的预备知识 /14
查看完整
第一篇 预备知识篇
第1章C魔法概览 /2
1.1 例说编程语言 2
1.2 用C语言编程的基本注意事项 6
1.3 主流C语言编译器介绍 8
1.4 关于GNU规范的语法扩展 10
1.5 用C语言构建一个可执行程序的流程 11
1.6 本章小结 12
第2章学习C语言的预备知识 /14
查看完整
陈轶 网名zenny_chen,C语言与汇编语言重度用户与拥趸者,安沃传媒移动客户端及HTML5技术研发总监、首席科学家。多年高性能计算、嵌入式系统与移动互联网实践经验,深谙实时操作系统内核、设备驱动研发,对多媒体高性能计算编程、移动端开发以及各种处理器架构如数家珍,同时精通计算机底层基础技术与各种编程语言,尤其精通C/C++,Java,Objective-C以及Swift!现任OpenGPU社区“并行计算讨论区”与“高级计算机体系结构讨论区”两大版块的版主,以及CocoaChina社区的Swift编程语言讨论区与代码例子区的版主。《OpenCL异构并行计算:原理、机制与优化实践》作者之一,App Store以及Mac App Store中CPU Dasher的作者,曾任理光上海图像技术有限公司的高级体系结构工程师。
阅读建议:本书从基础到高级,全面而深入,不同层次的读者可选择适合自己的章节阅读,参见前言“如何阅读本书”模块。
预备知识篇(第1~3章),为初级读者提供计算机理论知识和相关概念,如编程模式、主流开源编译器,以及搭建C编程环境的方法。
基础语法篇(第4~11章),学习C语言的基石——基本语法与使用讲解,涵盖基本元素、基本数据类型、用户自定义类型、数组和指针(难点)、控制流语句、函数。
高级语法篇(第12~16),讲述了C11编程的一些高级特性,进阶之用。涵盖:
q目前所支持的所有预处理器特性;
q编译上下文作用域、名字空间、连接属性;
qC11标准支持的类型限定符的标准用法与注意事项;
查看完整
预备知识篇(第1~3章),为初级读者提供计算机理论知识和相关概念,如编程模式、主流开源编译器,以及搭建C编程环境的方法。
基础语法篇(第4~11章),学习C语言的基石——基本语法与使用讲解,涵盖基本元素、基本数据类型、用户自定义类型、数组和指针(难点)、控制流语句、函数。
高级语法篇(第12~16),讲述了C11编程的一些高级特性,进阶之用。涵盖:
q目前所支持的所有预处理器特性;
q编译上下文作用域、名字空间、连接属性;
qC11标准支持的类型限定符的标准用法与注意事项;
查看完整
前言
第一篇 预备知识篇
第1章C魔法概览 /2
1.1 例说编程语言 2
1.2 用C语言编程的基本注意事项 6
1.3 主流C语言编译器介绍 8
1.4 关于GNU规范的语法扩展 10
1.5 用C语言构建一个可执行程序的流程 11
1.6 本章小结 12
第2章学习C语言的预备知识 /14
2.1 计算机体系结构简介 14
2.1.1 贮存器 15
2.1.2 存储器 15
2.1.3 寄存器 16
2.1.4 计算单元 16
2.1.5 程序执行流程 16
2.2 整数在计算机中的表示 17
2.2.1 原码表示法 18
2.2.2 补码表示法 19
2.2.3 八进制数与十六进制数 20
2.3 浮点数在计算机中的表示 22
2.4 地址与字节对齐 24
2.5 字符编码 25
2.6 大端与小端 28
2.7 按位逻辑运算 28
2.8 移位操作 30
2.8.1 算术左移与逻辑左移 30
2.8.2 逻辑右移 30
2.8.3 算术右移 31
2.8.4 循环右移 32
2.9 本章小结 32
第3章C语言编程的环境搭建 /33
3.1 Windows操作系统下搭建C语言编程环境 33
3.1.1 安装Visual Studio Community 2017 34
3.1.2 安装MinGW编译器 40
3.1.3 安装LLVM Clang编译器 43
3.2 macOS系统下搭建C语言编程环境 45
3.3 本章小结 51
第二篇 基础语法篇
第4章C语言中的基本元素 /54
4.1 C语言中的字符集 55
4.2 C语言中的token 56
4.2.1 C语言中的标识符 57
4.2.2 C语言中的关键字 58
4.2.3 C语言中的常量与字符串字面量 60
4.2.4 C语言中的标点符号 60
4.3 关于C语言中的“对象” 62
4.4 C语言中的“副作用” 63
4.5 C语言标准库中的printf函数 63
4.6 本章小结 65
第5章基本数据类型 /66
5.1 整数类型 66
5.1.1 int类型 67
5.1.2 short类型 68
5.1.3 long类型 69
5.1.4 long long类型 71
5.1.5 布尔类型 72
5.1.6 字符类型 73
5.1.7 宽字符以及Unicode字符类型 77
5.1.8 size_t与ptrdiff_t类型 81
5.1.9 C语言中的标准整数类型 82
5.2 浮点类型 84
5.3 数据精度与类型转换 86
5.3.1 整数晋升 87
5.3.2 带符号与无符号整数之间的转换 87
5.3.3 浮点数与浮点数的转换以及浮点数与整数之间的转换 90
5.4 C语言基本运算操作符 92
5.4.1 加、减、乘、除与求模运算操作符 92
5.4.2 按位逻辑操作符 93
5.4.3 自增、自减操作符 94
5.4.4 关系操作符、相等性操作符与逻辑操作符 95
5.4.5 移位操作符 96
5.4.6 圆括号操作符 97
5.5 sizeof操作符 98
5.6 投射操作符 99
5.7 本章小结 101
第6章用户自定义类型 /102
6.1 枚举类型 102
6.2 结构体类型 105
6.2.1 结构体概述 105
6.2.2 用结构体创建对象并访问其成员 107
6.2.3 结构体复合字面量 110
6.3 联合体类型 113
6.4 位域 117
6.4.1 位域的一般特性 118
6.4.2 位域成员的存放与布局 120
6.4.3 匿名位域 122
6.4.4 位域使用示例 124
6.5 字节对齐与字节填充 125
6.5.1 _Alignof操作符 125
6.5.2 _Alignas对齐说明符 126
6.5.3 结构体成员的字节对齐与字节填充 129
6.6 复数类型 133
6.7 本章小结 135
第7章C语言的数组与指针 /136
7.1 一维数组 136
7.2 多维数组 141
7.3 变长数组 145
7.4 一级指针与对象地址 147
7.4.1 地址与指针的基本概念 148
7.4.2 访问指针对象所指对象的内容 149
7.4.3 指针对象的其他操作 150
7.5 多级指针 153
7.6 指向用户自定义类型的指针 156
7.7 指针与数组的关系 159
7.8 指向数组的指针 162
7.9 void类型、指向void类型的指针与空指针 165
7.10 字符数组与字符串字面量 167
7.11 完整与不完整类型 170
7.12 灵活的数组成员 171
7.13 本章小结 173
第8章C语言的控制流语句 /174
8.1 逗号表达式 174
8.2 条件表达式 176
8.3 if-else语句 176
8.4 switch-case语句 179
8.5 while与do-while迭代语句 182
8.6 for迭代语句 187
8.7 goto语句 189
8.8 本章小结 192
第9章C语言的函数 /193
9.1 函数的声明与定义 194
9.2 函数调用与实现 196
9.2.1 函数调用的顺序点 197
9.2.2 函数的栈空间 200
9.2.3 函数的参数传递与返回 201
9.2.4 通过形参修改实参的值 204
9.3 数组类型作为函数形参 205
9.4 带有不定参数类型及个数的函数声明与调用 209
9.5 函数的递归调用 212
9.6 内联函数 218
9.7 函数的返回类型与无返回函数 221
9.8 指向函数的指针 223
9.9 C语言中的主函数main 226
9.10 函数与函数调用作为sizeof操作符 228
9.11 本章小结 229
第10章C语言预处理器 /230
10.1 宏定义 231
10.1.1 宏的基本使用 232
10.1.2 宏定义中的#操作符 234
10.1.3 宏定义中的##操作符 236
10.1.4 宏替换 238
10.1.5 可变参数的宏定义 240
10.2 C语言中预定义的宏 243
10.2.1 C语言强制要求的预定义宏 243
10.2.2 环境宏 244
10.2.3 条件特征宏
^ 收 起
第一篇 预备知识篇
第1章C魔法概览 /2
1.1 例说编程语言 2
1.2 用C语言编程的基本注意事项 6
1.3 主流C语言编译器介绍 8
1.4 关于GNU规范的语法扩展 10
1.5 用C语言构建一个可执行程序的流程 11
1.6 本章小结 12
第2章学习C语言的预备知识 /14
2.1 计算机体系结构简介 14
2.1.1 贮存器 15
2.1.2 存储器 15
2.1.3 寄存器 16
2.1.4 计算单元 16
2.1.5 程序执行流程 16
2.2 整数在计算机中的表示 17
2.2.1 原码表示法 18
2.2.2 补码表示法 19
2.2.3 八进制数与十六进制数 20
2.3 浮点数在计算机中的表示 22
2.4 地址与字节对齐 24
2.5 字符编码 25
2.6 大端与小端 28
2.7 按位逻辑运算 28
2.8 移位操作 30
2.8.1 算术左移与逻辑左移 30
2.8.2 逻辑右移 30
2.8.3 算术右移 31
2.8.4 循环右移 32
2.9 本章小结 32
第3章C语言编程的环境搭建 /33
3.1 Windows操作系统下搭建C语言编程环境 33
3.1.1 安装Visual Studio Community 2017 34
3.1.2 安装MinGW编译器 40
3.1.3 安装LLVM Clang编译器 43
3.2 macOS系统下搭建C语言编程环境 45
3.3 本章小结 51
第二篇 基础语法篇
第4章C语言中的基本元素 /54
4.1 C语言中的字符集 55
4.2 C语言中的token 56
4.2.1 C语言中的标识符 57
4.2.2 C语言中的关键字 58
4.2.3 C语言中的常量与字符串字面量 60
4.2.4 C语言中的标点符号 60
4.3 关于C语言中的“对象” 62
4.4 C语言中的“副作用” 63
4.5 C语言标准库中的printf函数 63
4.6 本章小结 65
第5章基本数据类型 /66
5.1 整数类型 66
5.1.1 int类型 67
5.1.2 short类型 68
5.1.3 long类型 69
5.1.4 long long类型 71
5.1.5 布尔类型 72
5.1.6 字符类型 73
5.1.7 宽字符以及Unicode字符类型 77
5.1.8 size_t与ptrdiff_t类型 81
5.1.9 C语言中的标准整数类型 82
5.2 浮点类型 84
5.3 数据精度与类型转换 86
5.3.1 整数晋升 87
5.3.2 带符号与无符号整数之间的转换 87
5.3.3 浮点数与浮点数的转换以及浮点数与整数之间的转换 90
5.4 C语言基本运算操作符 92
5.4.1 加、减、乘、除与求模运算操作符 92
5.4.2 按位逻辑操作符 93
5.4.3 自增、自减操作符 94
5.4.4 关系操作符、相等性操作符与逻辑操作符 95
5.4.5 移位操作符 96
5.4.6 圆括号操作符 97
5.5 sizeof操作符 98
5.6 投射操作符 99
5.7 本章小结 101
第6章用户自定义类型 /102
6.1 枚举类型 102
6.2 结构体类型 105
6.2.1 结构体概述 105
6.2.2 用结构体创建对象并访问其成员 107
6.2.3 结构体复合字面量 110
6.3 联合体类型 113
6.4 位域 117
6.4.1 位域的一般特性 118
6.4.2 位域成员的存放与布局 120
6.4.3 匿名位域 122
6.4.4 位域使用示例 124
6.5 字节对齐与字节填充 125
6.5.1 _Alignof操作符 125
6.5.2 _Alignas对齐说明符 126
6.5.3 结构体成员的字节对齐与字节填充 129
6.6 复数类型 133
6.7 本章小结 135
第7章C语言的数组与指针 /136
7.1 一维数组 136
7.2 多维数组 141
7.3 变长数组 145
7.4 一级指针与对象地址 147
7.4.1 地址与指针的基本概念 148
7.4.2 访问指针对象所指对象的内容 149
7.4.3 指针对象的其他操作 150
7.5 多级指针 153
7.6 指向用户自定义类型的指针 156
7.7 指针与数组的关系 159
7.8 指向数组的指针 162
7.9 void类型、指向void类型的指针与空指针 165
7.10 字符数组与字符串字面量 167
7.11 完整与不完整类型 170
7.12 灵活的数组成员 171
7.13 本章小结 173
第8章C语言的控制流语句 /174
8.1 逗号表达式 174
8.2 条件表达式 176
8.3 if-else语句 176
8.4 switch-case语句 179
8.5 while与do-while迭代语句 182
8.6 for迭代语句 187
8.7 goto语句 189
8.8 本章小结 192
第9章C语言的函数 /193
9.1 函数的声明与定义 194
9.2 函数调用与实现 196
9.2.1 函数调用的顺序点 197
9.2.2 函数的栈空间 200
9.2.3 函数的参数传递与返回 201
9.2.4 通过形参修改实参的值 204
9.3 数组类型作为函数形参 205
9.4 带有不定参数类型及个数的函数声明与调用 209
9.5 函数的递归调用 212
9.6 内联函数 218
9.7 函数的返回类型与无返回函数 221
9.8 指向函数的指针 223
9.9 C语言中的主函数main 226
9.10 函数与函数调用作为sizeof操作符 228
9.11 本章小结 229
第10章C语言预处理器 /230
10.1 宏定义 231
10.1.1 宏的基本使用 232
10.1.2 宏定义中的#操作符 234
10.1.3 宏定义中的##操作符 236
10.1.4 宏替换 238
10.1.5 可变参数的宏定义 240
10.2 C语言中预定义的宏 243
10.2.1 C语言强制要求的预定义宏 243
10.2.2 环境宏 244
10.2.3 条件特征宏
^ 收 起
陈轶 网名zenny_chen,C语言与汇编语言重度用户与拥趸者,安沃传媒移动客户端及HTML5技术研发总监、首席科学家。多年高性能计算、嵌入式系统与移动互联网实践经验,深谙实时操作系统内核、设备驱动研发,对多媒体高性能计算编程、移动端开发以及各种处理器架构如数家珍,同时精通计算机底层基础技术与各种编程语言,尤其精通C/C++,Java,Objective-C以及Swift!现任OpenGPU社区“并行计算讨论区”与“高级计算机体系结构讨论区”两大版块的版主,以及CocoaChina社区的Swift编程语言讨论区与代码例子区的版主。《OpenCL异构并行计算:原理、机制与优化实践》作者之一,App Store以及Mac App Store中CPU Dasher的作者,曾任理光上海图像技术有限公司的高级体系结构工程师。
阅读建议:本书从基础到高级,全面而深入,不同层次的读者可选择适合自己的章节阅读,参见前言“如何阅读本书”模块。
预备知识篇(第1~3章),为初级读者提供计算机理论知识和相关概念,如编程模式、主流开源编译器,以及搭建C编程环境的方法。
基础语法篇(第4~11章),学习C语言的基石——基本语法与使用讲解,涵盖基本元素、基本数据类型、用户自定义类型、数组和指针(难点)、控制流语句、函数。
高级语法篇(第12~16),讲述了C11编程的一些高级特性,进阶之用。涵盖:
q目前所支持的所有预处理器特性;
q编译上下文作用域、名字空间、连接属性;
qC11标准支持的类型限定符的标准用法与注意事项;
q深刻解读C语言语法体系的核心——类型系统;
qC11标准中表达式及其计算优先级,以及“左值”;
q主流编译器所采用的函数调用约定;
q主流C语言编译工具构建静态库/动态库的方法与实践。
语法扩展篇(第17~19章)讲述了GCC与Clang编译器对C语言的扩展,以及C语言的设计理念、未来C语言新添与排除特性。需要对底层交互与开发深入了解的读者大有裨益。
项目实践篇(第20~21章),UTF-8与UTF-16编码程序编写,基于控制台的计算器程序。精巧而知识点全面。
^ 收 起
预备知识篇(第1~3章),为初级读者提供计算机理论知识和相关概念,如编程模式、主流开源编译器,以及搭建C编程环境的方法。
基础语法篇(第4~11章),学习C语言的基石——基本语法与使用讲解,涵盖基本元素、基本数据类型、用户自定义类型、数组和指针(难点)、控制流语句、函数。
高级语法篇(第12~16),讲述了C11编程的一些高级特性,进阶之用。涵盖:
q目前所支持的所有预处理器特性;
q编译上下文作用域、名字空间、连接属性;
qC11标准支持的类型限定符的标准用法与注意事项;
q深刻解读C语言语法体系的核心——类型系统;
qC11标准中表达式及其计算优先级,以及“左值”;
q主流编译器所采用的函数调用约定;
q主流C语言编译工具构建静态库/动态库的方法与实践。
语法扩展篇(第17~19章)讲述了GCC与Clang编译器对C语言的扩展,以及C语言的设计理念、未来C语言新添与排除特性。需要对底层交互与开发深入了解的读者大有裨益。
项目实践篇(第20~21章),UTF-8与UTF-16编码程序编写,基于控制台的计算器程序。精巧而知识点全面。
^ 收 起
比价列表
1人想要
公众号、微信群
缺书网
微信公众号
微信公众号
扫码进群
实时获取购书优惠
实时获取购书优惠