• 征服C指针 第2版
21年品牌 40万+商家 超1.5亿件商品

征服C指针 第2版

正版保障 假一赔十 电子发票

74.84 7.6折 99 全新

库存2件

河北廊坊
认证卖家担保交易快速发货售后保障

作者(日)前桥和弥著

出版社人民邮电出版社

ISBN9787115554895

出版时间2021-03

装帧平装

开本16开

定价99元

货号4FCC0EF4DEDA48338FE

上书时间2024-09-30

瀚东书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介

 
 

  
    作者介绍 
  
 

  
    作者介绍 
  
 

前桥和弥(作者) 1969年出生,著有《自制编程语言》《彻底掌握C语言》《Java之谜和陷阱》等,其一针见血的“毒舌”文风和对编程语言深刻的见地受到广大读者的欢迎。 朱文佳(译者) 2005年毕业于上海大学计算机科学与技术学院,在对日通信行业从事开发及管理十余年,具有丰富的嵌入式C语言开发及项目管理经验。爱好阅读,自学日语,愿尽自己绵薄之力为大家分享*秀的外国图书。
 


目录

 
 

  
    目录 
   

  
    目录 
   

第0章 

 本书目标与读者对象 1 

 0-1 本书目标 2 

 0-2 读者对象与内容结构 5 

 第 1章 

 打好基础——预备知识和复习 9 

 1-1 C语言是什么样的语言 10 

 1-1-1 C语言的发展历程 10 

  是汇编语言还是汇编器 11 

  B语言是什么样的语言 12 

 1-1-2 不完备和不统一的语法 13 

 1-1-3 C语言“圣经”——K&R 13 

 1-1-4 ANSI C之前的C语言 14 

 1-1-5 ANSI C(C89/90) 16 

 1-1-6 C95 16 

 1-1-7 C99 17 

 1-1-8 C11 18 

 1-1-9 C语言的理念 19 

 1-1-10 C语言的主体 20 

 1-1-11 C语言曾是只能使用标量的语言 21 

 1-2 内存和地址 23 

 1-2-1 内存和地址 23 

 1-2-2 内存和变量 25 

  size_t类型 27 

 1-2-3 内存和程序运行 27 

 1-3 关于指针 29 

 1-3-1 恶名昭著的指针究@是什么 29 

 1-3-2 和指针的第 一次亲密接触 30 

 1-3-3 地址运算符、间接运算符、下标运算符 34 

  关于本书中的地址值——16进制表示法 35 

  混乱的声明——如何自然地理解声明 35 

  杂谈:hoge是什么 37 

 1-3-4 指针和地址之间的微妙关系 38 

  在运行时既没有类型信息,也没有变量名 40 

 1-3-5 指针运算 41 

 1-3-6 何谓空指针 42 

  NULL和0和\0 43 

 1-3-7 实践——从函数返回多个值 46 

  形参与实参 50 

 1-4 关于数组 51 

 1-4-1 使用数组 51 

  C语言的数组是从0开始的 53 

 1-4-2 数组与指针的微妙关系 54 

 1-4-3 下标运算符[]与数组毫无关系 56 

  语法糖 59 

 1-4-4 为何存在指针运算这种奇怪功能 59 

 1-4-5 别再滥用指针运算了 61 

  更改参数的做法可取吗 62 

 1-4-6 试图将数组作为函数参数传递 63 

  如果对数组进行值传递 65 

 1-4-7 声明函数形参的方法 66 

  C语言为什么不进行数组边界检查 67 

 1-4-8 C99中的可变长数组 68 

 第 2章 

 做个实验——C语言是怎样使用内存的 71 

 2-1 虚拟地址 72 

  关于scanf() 75 

  未定义、未指定、实现定义 77 

 2-2 C语言中内存的使用方法 78 

 2-2-1 C语言中变量的种类 78 

 2-2-2 尝试输出地址 80 

  存储类说明符 80 

 2-3 函数与字符串字面量 85 

 2-3-1 只读内存区域 85 

 2-3-2 指向函数的指针 86 

 2-4 静态变量 88 

 2-4-1 什么是静态变量 88 

 2-4-2 分割编译与链接 88 

 2-5 自动变量(栈) 91 

 2-5-1 内存空间的“重复使用” 91 

 2-5-2 函数调用究@发生了什么 91 

  调用约定 95 

 2-5-3 自动变量的引用 95 

  一旦函数执行结束,自动变量的内存空间就会被释放 98 

 2-5-4 典型的安全漏洞——缓冲区溢出漏洞 99 

  操作系统针对缓冲区溢出漏洞给出的对策 102 

 2-5-5 可变长参数 103 

  assert() 106 

  试写一个用于调试的函数 107 

 2-5-6 递归调用 110 

 2-5-7 C99中的可变长数组(VLA)的栈 113 

 2-6 利用malloc()动态分配内存(堆) 116 

 2-6-1 malloc()的基础知识 116 

  应该强制转换malloc()的返回值类型吗 119 

 2-6-2 malloc()是系统调用吗 119 

 2-6-3 malloc()中发生了什么 120 

 2-6-4 free()之后相应的内存空间会怎样 122 

  Valgrind 124 

 2-6-5 碎片化 124 

 2-6-6 malloc()以外的动态内存分配函数 125 

  假如malloc()参数为0 127 

  malloc()的返回值检查 128 

  程序结束时也必须调用free()吗 129 

 2-7 对齐 131 

  结构体的成员名称在运行时也是缺失的 134 

 2-8 字节序 135 

 2-9 关于语言规范和实现——抱歉,前面的内容都是骗你的 137 

 第3章 

 语法揭秘——它到底是怎么回事 139 

 3-1 解读C语言声明 140 

 3-1-1 用英语阅读 140 

 3-1-2 解读C语言声明 141 

  近来的语言多数是将类型后置的 144 

 3-1-3 类型名 145 

  如果把间接运算符*后置 146 

 3-2 C语言数据类型的模型 147 

 3-2-1 基本类型和派生类型 147 

 3-2-2 指针类型的派生 148 

 3-2-3 数组类型的派生 150 

 3-2-4 什么是指向数组的指针 150 

 3-2-5 C语言中不存在多维数组 152 

 3-2-6 函数类型的派生 154 

 3-2-7 计算类型的长度 155 

 3-2-8 基本类型 157 

 3-2-9 结构体和联合体 159 

 3-2-10 不完全类型 159 

 3-3 表达式 162 

 3-3-1 表达式和数据类型 162 

  对“表达式”使用sizeof 164 

 3-3-2 什么是左值——变量的两张面孔 166 

  “左值”的由来 167 

 3-3-3 数组→指针的转换 168 

 3-3-4 与数组和指针相关的运算符 169 

 3-3-5 多维数组 171 

  运算符的优先级 173 

 3-4 解读C语言声明(续) 176 

 3-4-1 const修饰符 176 

 3-4-2 如何使用const?可以用到哪种程度 178 

  const可以代替#define吗 181 

 3-4-3 typedef 181 

 3-5 其他 185 

 3-5-1 函数形参的声明(ANSI C版) 185 

  K&R中关于函数形参声明的说明 186 

 3-5-2 函数形参的声明(C99版) 188 

 3-5-3 关于空的下标运算符[] 189 

  定义与声明 191 

 3-5-4 字符串字面量 192 

  字符串字面量是char的数组 194 

 3-5-5 关于指向函数的指针引发的混乱 195 

 3-5-6 强制类型转换 196 

 3-5-7 练习——解读复杂声明 198 

 3-6 请记住:数组与指针截然不同 203 

 3-6-1 你为什么感到混乱 203 

 3-6-2 在表达式中 204 

 3-6-3 在声明中 206 

 第4章 

 数组和指针的常见用法 209 

 4-1 基本用法 210 

 4-1-1 通过返回值以外的方法返回 210 

 4-1-2 将数组作为函数的参数传递 211 

 4-1-3 动态数组——通过malloc()分配的可变长数组 212 

  其他语言的数组 214 

 4-2 组合使用 216 

 4-2-1 动态数组的数组 216 

  宽字符 223 

 4-2-2 动态数组的动态数组 225 

 4-2-3 命令行参数 228 

 4-2-4 通过参数返回指针 230 

  什么是“双指针” 235 

 4-2-5 将多维数组作为函数的参数传递 236 

 4-2-6 将多维数组作为函数的参数传递(VLA版) 237 

 4-2-7 通过malloc()分配纵横可变的二维数组(C99) 239 

  C语言中的多维数组是行优先的 240 

  纵横可变的二维数组的ANSI C实现 241 

  Java和C#的多维数组 242 

 4-2-8 数组的动态数组 243 

 4-2-9 在考虑可变之前,不妨考虑使用结构体 244 

 4-2-10 可变长结构体(ANSI C版) 246 

  关于分配可变长结构体时的长度指定 248 

 4-2-11 柔性数组成员(C99) 248 

  指针可以指向数组的*后一个元素的下一个元素 249 

 第5章 

 数据结构——指针的真正用法 251 

 5-1 案例学习1:计算单词的使用频率 252 

 5-1-1 案例的需求 252 

  各种语言中指针的叫法 253 

  引用传递 253 

 5-1-2 设计 256 

  关于头文件的写法 259 

 5-1-3 数组版 261 

 5-1-4 链表版 265 

  头文件的公有和私有 271 

  当需要同时处理多个数据时 272 

  迭代器 273 

 5-1-5 添加查找功能 275 

  翻倍游戏 277 

 5-1-6 其他数据结构 277 

 5-2 案例学习2:绘图工具的数据结构 283 

 5-2-1 案例的需求 283 

 5-2-2 表示各种图形 284 

  关于坐标系 285 

 5-2-3 Shape类型 286 

 5-2-4 讨论——还有其他方法吗 289 

  能保存任何类型的链表 293 

 5-2-5 图形的组合 294 

 5-2-6 通过指向函数的指针的数组分配处理 300 

 5-2-7 通往继承与多态之路 302 

  将draw()放入Shape中真的好吗 302 

 5-2-8 指针的可怕之处 304 

 5-2-9 那么,指针到底是什么呢 305 

 第6章 

 其他——拾遗 307 

 6-1 新的函数组 308 

 6-1-1 添加了范围检查的函数(C11) 308 

  restrict关键字 310 

 6-1-2 无须使用静态存储空间的函数(C11) 311 

 6-2 陷阱 314 

 6-2-1 整数提升 314 

 6-2-2 如果在(老式的)C语言中使用float类型的参数 316 

 6-2-3 printf()与scanf() 318 

 6-2-4 原型声明的光与影 319 

 6-3 惯用写法 321 

 6-3-1 结构体声明 321 

 6-3-2 自引用结构体 322 

 6-3-3 结构体的相互引用 323 

 6-3-4 结构体的嵌套 324 

 6-3-5 联合体 325 

 6-3-6 无名结构体和无名联合体(C11) 326 

 6-3-7 数组的初始化 327 

 6-3-8 指向char的指针的数组的初始化 328 

 6-3-9 结构体的初始化 329 

 6-3-10 联合体的初始化 330 

 6-3-11 指定初始化(C99) 331 

 6-3-12 复合字面量(C99) 332 

 参考文献 334 

 


   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP