Effective C中文版
定 价:¥89.80
作 者:
[美] 罗伯特·C. 西科德(Robert C. Seacord)
出版社:
人民邮电出版社
丛编项:
标 签:
暂缺
购买这本书可以去
当当网 (¥67.30)
ISBN:
9787115612953
出版时间:
2023-04-01
包装:
平装-胶订
开本:
128开
页数:
字数:
内容简介
本书带领读者通过练习掌握编写现代C程序的方法和技巧。全书分为11章,首先概述C语言编程的基本概念,然后详解C语言的所有构成要素,包括变量、对象、函数、数据类型、运算符、表达式、控制流、动态内存分配、预处理器等,后带领读者利用这些构成要素构建实用的系统,学习如何调试、测试、分析代码。学透本书,你就能成为专业的C程序员,编写出安全、高质量、可移植的C程序。本书适合所有想编写优秀C程序的读者阅读。
作者简介
罗伯特·C. 西科德(Robert C. Seacord),C语言标准委员会专家,从头到尾参与了C语言标准C11、C17和C23的制定。罗伯特也是Linux基金会顾问,还兼任卡内基?梅隆大学计算机科学教授,并一手创办了卡内基?梅隆大学软件工程学院的安全编程项目。罗伯特发表了50余篇论文,主题涵盖软件安全、软件工程、Web系统设计、遗留系统现代化、搜索引擎、用户界面设计等,另有《C安全编码标准》《C和C安全编码》等6部著作。
图书目录
第 1章 C语言入门 11.1 编写第 一个C程序 11.1.1 编译并运行程序 21.1.2 预处理器指令 31.1.3 main函数 31.1.4 检查函数返回值 1.1.5 格式化输出 51.2 编辑器和集成式开发环境 51.3 编译器 71.3.1 GNU编译器合集 71.3.2 Clang 81.3.3 Microsoft Visual Studio 81.4 可移植性 81.4.1 由实现定义的行为 91.4.2 未指定行为 91.4.3 未定义行为 101.4.4 特定区域设置行为和通用扩展 111.5 小结 11第 2章 对象、函数和类型 122.1 对象、函数、类型和指针 122.2 声明变量 132.2.1 交换值(初次尝试)142.2.2 交换值(再次尝试) 152.3 作用域 172.4 存储期 182.5 对齐方式 192.6 对象类型 202.6.1 布尔类型 202.6.2 字符类型 212.6.3 数值类型 212.7 函数类型 232.8 派生类型 242.8.1 指针类型 242.8.2 数组 252.8.3 结构 272.8.4 联合 272.9 标签 282.10 类型限定符 302.10.1 const 302.10.2 volatile 312.10.3 restrict 322.11 练习 322.12 小结 32第3章 算术类型 333.1 整数 333.1.1 填充和精度 333.1.2 头文件 343.1.3 声明整数 343.1.4 无符号整数 353.1.5 有符号整数 373.1.6 整数常量 413.2 浮点 423.2.1 浮点类型 423.2.2 浮点算术 443.2.3 浮点值 443.2.4 浮点常量 463.3 算术转换 463.3.1 整数转换等级 473.3.2 整数提升 483.3.3 寻常算术转换 493.3.4 隐式转换示例 503.3.5 安全转换 513.4 小结 52第4章 表达式和运算符 534.1 简单赋值 534.2 求值 554.3 函数调用 554.4 递增运算符和递减运算符 564.5 运算符优先级和结合性 574.6 求值顺序 594.6.1 无序求值和不定序求值 604.6.2 顺序点 614.7 sizeof运算符 614.8 算术运算符 624.8.1 单目运算符 和- 624.8.2 逻辑否运算符 634.8.3 乘积运算符 634.8.4 累加运算符 644.9 按位运算符 644.9.1 求反运算符 654.9.2 移位运算符 654.9.3 按位与运算符 674.9.4 按位异或运算符 674.9.5 按位或运算符 684.10 逻辑运算符 684.11 转换运算符 704.12 条件运算符 714.13 _Alignof运算符 714.14 关系运算符 724.15 复合赋值运算符 734.16 逗号运算符 734.17 指针算术 744.18 小结 75第5章 控制流 765.1 表达式语句 765.2 复合语句 775.3 选择语句 775.3.1 if语句 775.3.2 switch语句 805.4 迭代语句 835.4.1 while语句 835.4.2 do...while语句 845.4.3 for语句 855.5 跳转语句 875.5.1 goto语句 875.5.2 continue语句 895.5.3 break语句 895.5.4 return语句 905.6 练习 915.7 小结 91第6章 动态分配内存 926.1 存储期 926.1.1 堆和内存管理器 936.1.2 什么时候使用动态分配内存 936.2 内存管理函数 946.2.1 malloc函数 946.2.2 aligned_alloc函数 966.2.3 calloc函数 976.2.4 realloc函数 976.2.5 reallocarray函数 996.2.6 free函数 1006.3 内存状态 1016.4 柔性数组成员 1026.5 其他的动态分配内存 1036.5.1 alloca函数 1036.5.2 变长数组 1046.6 调试存储分配问题 1086.6.1 dmalloc 1086.6.2 安全关键型系统 1106.7 练习 1106.8 小结 110第7章 字符和字符串 1117.1 字符 1117.1.1 ASCII 1127.1.2 Unicode 1127.1.3 源字符集和执行字符集 1137.1.4 数据类型 1147.1.5 字符常量 1167.1.6 转义序列 1167.1.7 Linux 1177.1.8 Windows 1187.1.9 字符转换 1197.2 字符串 1237.3 字符串处理函数 1257.3.1 和 1267.3.2 附录K:边界检查接口 1327.3.3 POSIX 1347.3.4 Microsoft 1357.4 小结 136第8章 输入/输出 1378.1 标准I/O流 1378.1.1 流缓冲 1388.1.2 预定义流 1388.1.3 流倾向 1408.1.4 文本流和二进制流 1408.2 打开文件和创建文件 1408.2.1 fopen函数 1408.2.2 POSIX 的open函数 1428.3 关闭文件 1448.3.1 fclose函数 1448.3.2 POSIX的close函数 1458.4 读写字符和行 1458.5 流冲洗 1478.6 设置文件内部位置 1488.7 删除文件和重命名文件 1508.8 使用临时文件 1518.9 读取格式化文本流 1518.10 读写二进制流 1548.11 小结 157第9章 预处理器 1599.1 编译过程 1599.2 文件包含 1609.3 条件包含 1619.3.1 生成错误 1629.3.2 头文件保护 1639.4 宏定义 1649.4.1 宏替换 1679.4.2 泛型宏 1699.4.3 预定义宏 1699.5 小结 170第 10章 程序结构 17110.1 组件化原则 17110.1.1 耦合和内聚 17110.1.2 代码复用 17210.1.3 数据抽象 17210.1.4 不透明类型 17310.2 可执行文件 17410.3 链接 17510.4 组织一个简单的程序 17710.5 构建代码 18110.6 小结 183第 11章 调试、测试和分析 18411.1 断言 18411.1.1 静态断言 18411.1.2 运行期断言 18611.2 编译器设置和选项 18811.2.1 GCC和Clang 18811.2.2 Visual C 19111.3 调试 19211.4 单元测试 19511.5 静态分析 19811.6 动态分析 20011.7 练习 20411.8 小结 205参考文献 206
