datasheet
超过460,000+ 应用技术资源下载
rar

C和指针(Pointers on C)

  • 1星
  • 日期: 2013-07-15
  • 大小: 26.48MB
  • 所需积分:1分
  • 下载次数:4
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: C和指针C语言指针

基本信息原书名: Pointers on C 

原出版社: Pearson Education 

作者: Kenneth A.Reek   [作译者介绍] 

译者: 徐波[同译者作品] 

丛书名: C和C++实务精选 

出版社:人民邮电出版社 

ISBN:7115114560 

上架时间:2003-9-2 

出版日期:2003 年9月 

开本:16开 

页码:450 

版次:1-1 内容简介我竭尽全力地推荐这本我所见过的最好的C编程入门图书。作者深知读者所需,并为他们打下良好基础。如果你已经开始学习C语言但始终不得要领,不妨试一试这本书。 ——Francis Glassborow, ACCU主席 

本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。 

全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 

本书适合C语言初学者和初级C程序员阅读,也可作为计算机专业学生学习C语言的参考。作译者本书提供作译者介绍

Kenneth A . Reek 美国Rochester工业学院计算机系教授,有9年的C编程教学经验,他的Pointers on C获得ACCU的高度评价。Francis Glassborow认为Reek对C库及其扩展应用有很深了解,并且也很欣赏他“先教会后解释”的教学方式。徐 波 浙江宁波人,熟悉C、C++和Java语言。2002年开始从事计算机技术图书翻译,第一部译作《C专家编程》博得好评,其谦逊平和的态度也使读者产生好感。徐波技术视野广阔,翻译文笔优美,是颇具潜力的译作者。 目录回到顶部↑第1章 快速上手 1 

1.1 简介 1 

1.1.1 空白和注释 4 

1.1.2 预处理指令 4 

1.1.3 main函数 5 

1.1.4 read_column_numbers函数 8 

1.1.5 rearrange函数 12 

1.2 补充说明 14 

1.3 编译 14 

1.4 总结 15 

1.5 警告的总结 15 

1.6 编程提示的总结 15 

1.7 问题 16 

1.8 编程练习 16 

第2章 基本概念 19 

2.1 环境 19 

2.1.1 翻译 19 

2.1.2 执行 21 

2.2 词法规则 21 

2.2.1 字符 22 .2.2.2 注释 23 

2.2.3 自由形式的源代码 23 

2.2.4 标识符 24 

2.2.5 程序的形式 24 

2.3 程序风格 25 

2.4 总结 26 

2.5 警告的总结 26 

2.6 编程提示的总结 26 

2.7 问题 27 

2.8 编程练习 28 

第3章 数据 29 

3.1 基本数据类型 29 

3.1.1 整型家族 29 

3.1.2 浮点类型 32 

3.1.3 指针 33 

3.2 基本声明 35 

3.2.1 初始化 35 

3.2.2 声明简单数组 36 

3.2.3 声明指针 36 

3.2.4 隐式声明 37 

3.3 typedef 38 

3.4 常量 38 

3.5 作用域 39 

3.5.1 代码块作用域 40 

3.5.2 文件作用域 41 

3.5.3 原型作用域 41 

3.5.4 函数作用域 41 

3.6 链接属性 41 

3.7 存储类型 43 

3.8 static关键字 44 

3.9 作用域、存储类型示例 45 

3.10 总结 46 

3.11 警告的总结 47 

3.12 编程提示的总结 47 

3.13 问题 48 

第4章 语句 51 

4.1 空语句 51 

4.2 表达式语句 51 

4.3 代码块 52 

4.4 if语句 52 

4.5 while语句 53 

4.5.1 break和continue语句 54 

4.5.2 while语句的执行过程 54 

4.6 for语句 55 

4.7 do语句 56 

4.8 switch语句 57 

4.8.1 switch中的 break语句 58 

4.8.2 default子句 59 

4.8.3 switch语句的执行过程 59 

4.9 goto语句 60 

4.10 总结 61 

4.11 警告的总结 62 

4.12 编程提示的总结 62 

4.13 问题 62 

4.14 编程练习 63 

第5章 操作符和表达式 67 

5.1 操作符 67 

5.1.1 算术操作符 67 

5.1.2 移位操作符 67 

5.1.3 位操作符 69 

5.1.4 赋值 70 

5.1.5 单目操作符 72 

5.1.6 关系操作符 73 

5.1.7 逻辑操作符 74 

5.1.8 条件操作符 75 

5.1.9 逗号操作符 76 

5.1.10 下标引用、函数调用和结构成员 77 

5.2 布尔值 78 

5.3 左值和右值 79 

5.4 表达式求值 80 

5.4.1 隐式类型转换 80 

5.4.2 算术转换 80 

5.4.3 操作符的属性 81 

5.4.4 优先级和求值的顺序 82 

5.5 总结 85 

5.6 警告的总结 86 

5.7 编程提示的总结 86 

5.8 问题 86 

5.9 编程练习 88 

第6章 指针 91 

6.1 内存和地址 91 

6.2 值和类型 92 

6.3 指针变量的内容 93 

6.4 间接访问操作符 94 

6.5 未初始化和非法的指针 95 

6.6 NULL指针 96 

6.7 指针、间接访问和左值 97 

6.8 指针、间接访问和变量 97 

6.9 指针常量 98 

6.10 指针的指针 98 

6.11 指针表达式 99 

6.12 实例 104 

6.13 指针运算 107 

6.13.1 算术运算 108 

6.13.2 关系运算 110 

6.14 总结 111 

6.15 警告的总结 112 

6.16 编程提示的总结 112 

6.17 问题 112 

6.18 编程练习 115 

第7章 函数 117 

7.1 函数定义 117 

7.2 函数声明 119 

7.2.1 原型 119 

7.2.2 函数的缺省认定 121 

7.3 函数的参数 122 

7.4 ADT和黑盒 124 

7.5 递归 127 

7.5.1 追踪递归函数 128 

7.5.2 递归与迭代 131 

7.6 可变参数列表 134 

7.6.1 stdarg宏 135 

7.6.2 可变参数的限制 135 

7.7 总结 136 

7.8 警告的总结 137 

7.9 编程提示的总结 137 

7.10 问题 138 

7.11 编程练习 138 

第8章 数组 141 

8.1 一维数组 141 

8.1.1 数组名 141 

8.1.2 下标引用 142 

8.1.3 指针与下标 144 

8.1.4 指针的效率 145 

8.1.5 数组和指针 150 

8.1.6 作为函数参数的数组名 150 

8.1.7 声明数组参数 152 

8.1.8 初始化 152 

8.1.9 不完整的初始化 153 

8.1.10 自动计算数组长度 153 

8.1.11 字符数组的初始化 153 

8.2 多维数组 154 

8.2.1 存储顺序 154 

8.2.2 数组名 155 

8.2.3 下标 156 

8.2.4 指向数组的指针 158 

8.2.5 作为函数参数的多维数组 159 

8.2.6 初始化 160 

8.2.7 数组长度自动计算 162 

8.3 指针数组 162 

8.4 总结 165 

8.5 警告的总结 166 

8.6 编程提示的总结 166 

8.7 问题 166 

8.8 编程练习 170 

第9章 字符串、字符和字节 175 

9.1 字符串基础 175 

9.2 字符串长度 175 

9.3 不受限制的字符串函数 177 

9.3.1 复制字符串 177 

9.3.2 连接字符串 178 

9.3.3 函数的返回值 178 

9.3.4 字符串比较 178 

9.4 长度受限的字符串函数 179 

9.5 字符串查找基础 180 

9.5.1 查找一个字符 180 

9.5.2 查找任何几个字符 181 

9.5.3 查找一个子串 181 

9.6 高级字符串查找 182 

9.6.1 查找一个字符串前缀 182 

9.6.2 查找标记 182 

9.7 错误信息 184 

9.8 字符操作 184 

9.8.1 字符分类 184 

9.8.2 字符转换 184 

9.9 内存操作 185 

9.10 总结 186 

9.11 警告的总结 187 

9.12 编程提示的总结 187 

9.13 问题 188 

9.14 编程练习 188 

第10章 结构和联合 195 

10.1 结构基础知识 195 

10.1.1 结构声明 195 

10.1.2 结构成员 197 

10.1.3 结构成员的直接访问 197 

10.1.4 结构成员的间接访问 198 

10.1.5 结构的自引用 198 

10.1.6 不完整的声明 199 

10.1.7 结构的初始化 199 

10.2 结构、指针和成员 200 

10.2.1 访问指针 201 

10.2.2 访问结构 201 

10.2.3 访问结构成员 202 

10.2.4 访问嵌套的结构 203 

10.2.5 访问指针成员 204 

10.3 结构的存储分配 205 

10.4 作为函数参数的结构 206 

10.5 位段 209 

10.6 联合 211 

10.6.1 变体记录 212 

10.6.2 联合的初始化 213 

10.7 总结 214 

10.8 警告的总结 214 

10.9 编程提示的总结 214 

10.10 问题 215 

10.11 编程练习 217 

第11章 动态内存分配 221 

11.1 为什么使用动态内存分配 221 

11.2 malloc和free 221 

11.3 calloc和realloc 222 

11.4 使用动态分配的内存 223 

11.5 常见的动态内存错误 223 

11.6 内存分配实例 226 

11.7 总结 231 

11.8 警告的总结 232 

11.9 编程提示的总结 232 

11.10 问题 232 

11.11 编程练习 233 

第12章 使用结构和指针 235 

12.1 链表 235 

12.2 单链表 235 

12.2.1 在单链表中插入 236 

12.2.2 其他链表操作 245 

12.3 双链表 245 

12.3.1 在双链表中插入 246 

12.3.2 其他链表操作 253 

12.4 总结 253 

12.5 警告的总结 254 

12.6 编程提示的总结 254 

12.7 问题 254 

12.8 编程练习 255 

第13章 高级指针话题 257 

13.1 进一步探讨指向指针的指针 257 

13.2 高级声明 258 

13.3 函数指针 260 

13.3.1 回调函数 261 

13.3.2 转移表 263 

13.4 命令行参数 265 

13.4.1 传递命令行参数 265 

13.4.2 处理命令行参数 266 

13.5 字符串常量 269 

13.6 总结 271 

13.7 警告的总结 272 

13.8 编程提示的总结 272 

13.9 问题 272 

13.10 编程练习 275 

第14章 预处理器 279 

14.1 预定义符号 279 

14.2 #define 279 

14.2.1 宏 281 

14.2.2 #define替换 282 

14.2.3 宏与函数 283 

14.2.4 带副作用的宏参数 284 

14.2.5 命名约定 285 

14.2.6 #undef 285 

14.2.7 命令行定义 285 

14.3 条件编译 286 

14.3.1 是否被定义 287 

14.3.2 嵌套指令 288 

14.4 文件包含 288 

14.4.1 函数库文件包含 289 

14.4.2 本地文件包含 289 

14.4.3 嵌套文件包含 290 

14.5 其他指令 291 

14.6 总结 292 

14.7 警告的总结 293 

14.8 编程提示的总结 293 

14.9 问题 293 

14.10 编程练习 295 

第15章 输入/输出函数 297 

15.1 错误报告 297 

15.2 终止执行 298 

15.3 标准I/O函数库 298 

15.4 ANSI I/O概念 299 

15.4.1 流 299 

15.4.2 文件 300 

15.4.3 标准I/O常量 300 

15.5 流I/O总览 301 

15.6 打开流 302 

15.7 关闭流 303 

15.8 字符I/O 304 

15.8.1 字符I/O宏 305 

15.8.2 撤消字符I/O 305 

15.9 未格式化的行I/O 306 

15.10 格式化的行I/O 308 

15.10.1 scanf家族 308 

15.10.2 scanf格式代码 308 

15.10.3 printf家族 312 

15.10.4 printf格式代码 312 

15.11 二进制I/O 316 

15.12 刷新和定位函数 316 

15.13 改变缓冲方式 318 

15.14 流错误函数 319 

15.15 临时文件 319 

15.16 文件操纵函数 319 

15.17 总结 320 

15.18 警告的总结 321 

15.19 编程提示的总结 322 

15.20 问题 322 

15.21 编程练习 323 

第16章 标准函数库 327 

16.1 整型函数 327 

16.1.1 算术 [stdlib.h] 327 

16.1.2 随机数[stdlib.h] 328 

16.1.3 字符串转换 [stdlib.h] 329 

16.2 浮点型函数 329 

16.2.1 三角函数 [math.h] 330 

16.2.2 双曲函数 [math.h] 330 

16.2.3 对数和指数函数 [math.h] 330 

16.2.4 浮点表示形式 [math.h] 331 

16.2.5 幂 [math.h] 331 

16.2.6 底数、顶数、绝对值和余数 [math.h] 331 

16.2.7 字符串转换 [stdlib.h] 332 

16.3 日期和时间函数 332 

16.3.1 处理器时间 [time.h] 332 

16.3.2 当天时间 [time.h] 332 

16.4 非本地跳转 [setjmp.h] 335 

16.4.1 实例 336 

16.4.2 何时使用非本地跳转 337 

16.5 信号 338 

16.5.1 信号名 [signal.h] 338 

16.5.2 处理信号 [signal.h] 339 

16.5.3 信号处理函数 340 

16.6 打印可变参数列表 [stdarg.h] 341 

16.7 执行环境 342 

16.7.1 终止执行 [stdlib.h] 342 

16.7.2 断言[assert.h] 342 

16.7.3 环境 [stdlib.h] 343 

16.7.4 执行系统命令 [stdlib.h] 343 

16.7.5 排序和查找[stdlib.h] 344 

16.8 locale 346 

16.8.1 数值和货币格式 [locale.h] 346 

16.8.2 字符串和locale [string.h] 348 

16.8.3 改变locale的效果 349 

16.9 总结 349 

16.10 警告的总结 350 

16.11 编程提示的总结 351 

16.12 问题 351 

16.13 编程练习 352 

第17章 经典抽象数据类型 355 

17.1 内存分配 355 

17.2 堆栈 355 

17.2.1 堆栈接口 356 

17.2.2 实现堆栈 356 

17.3 队列 364 

17.3.1 队列接口 364 

17.3.2 实现队列 365 

17.4 树 369 

17.4.1 在二叉搜索树中插入 370 

17.4.2 从二叉搜索树删除节点 370 

17.4.3 在二叉搜索树中查找 371 

17.4.4 树的遍历 371 

17.4.5 二叉搜索树接口 372 

17.4.6 实现二叉搜索树 373 

17.5 实现的改进 379 

17.5.1 拥有超过一个的堆栈 379 

17.5.2 拥有超过一种的类型 380 

17.5.3 名字冲突 380 

17.5.4 标准函数库的ADT 381 

17.6 总结 383 

17.7 警告的总结 384 

17.8 编程提示的总结 384 

17.9 问题 384 

17.10 编程练习 385 

第18章 运行时环境 387 

18.1 判断运行时环境 387 

18.1.1 测试程序 387 

18.1.2 静态变量和初始化 390 

18.1.3 堆栈帧 391 

18.1.4 寄存器变量 391 

18.1.5 外部标识符的长度 393 

18.1.6 判断堆栈帧布局 393 

18.1.7 表达式的副作用 398 

18.2 C和汇编语言的接口 399 

18.3 运行时效率 400 

18.4 总结 402 

18.5 警告的总结 403 

18.6 编程提示的总结 403 

18.7 问题 403 

18.8 编程练习 403 

附录 部分问题答案 405 

索引 443 

参考文献 448 

更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })