C指针编程之道
作 者: 孔浩,张华杰,陈猛 编著
出版时间:2011
内容简介
《C指针编程之道》是一本帮助程序员提高编程素养的图书,书中结合开发人员多年的编程经验和感悟,介绍了指针在数组中的应用、在函数中的应用、指向指针的指针、数据结构中指针的应用,指向文件类型的指针、指针在C语言算法中的应用、典型迷宫算法实例、C语言和汇编语言的接口、Linux C编程技术简介、Linux进程与线程通信实例、C语言管理系统设计案例、C语言游戏设计案例等内容。《C指针编程之道》通过简单生动的语言和经典的开发实例讲解C语言指针应用的方方面面,帮助读者完全掌握C语言指针的使用细节。《C指针编程之道》适合大中专院校在校生、毕业生、求职者、编程爱好者学习,同时也可作为想要学习编程的初学者的指导用书。
目录
第1章 C语言指针
1.1 C语言的灵魂
1.1.1 从这里开始
1.1.2 知识提示
1.2 相逢在C语言
1.2.1 初识指针——指针变量的定义
1.2.2 学以致用——指针变量的引用
1.2.3 知识提示
1.3 走近指针的日子
1.3.1 方圆世界——指针运算符
1.3.2 玩转指针——指针操作
1.3.3 知识提示
第2章 指针在数组中的应用
2.1 由内及外——数组在内存中的样子
2.1.1 物以类聚——数组
2.1.2 数组在内存中的样子
2.1.3 知识提示
2.2 自从有了你
2.2.1 数组的左膀——下标
2.2.2 数组的右臂——指针
2.2.3 知识提示
2.3 数组,不止一面
2.3.1 引蛇出洞——数组指针的定义
2.3.2 数组指针的引用
2.3.3 知识提示
2.4 数组元素那点事
2.4.1 这是直观的世界——数组的下标表示法
2.4.2 数组的另一面——数组的指针表示法
2.4.3 异曲同工——数组的下标与指针
2.4.4 知识提示
2.5 指针集中营——指针数组
2.5.1 戏说指针数组
2.5.2 深度对话——指针数组的引用
2.5.3 知识提示
2.6 聚焦字符串的指针
2.6.1 字符串指针的定义
2.6.2 字符串指针的引用
2.6.3 知识提示
第3章 指针在函数中的应用
3.1 完美的传递
3.1.1 指针新用途——指针用做函数参数
3.1.2 说来说去——普通参数与指针参数
3.1.3 知识提示
3.2 函数也有指针
3.2.1 何谓函数的指针
3.2.2 指点江山——指向函数的指针变量
3.2.3 翻来覆去——函数指针与指针函数
3.2.4 知识提示
3.3 我要的是指针,不是寂寞
3.3.1 函数的返回值
3.3.2 这个函数很奇怪——返回指针类型的函数
3.3.3 main函数的返回值
3.3.4 知识提示
第4章 指向指针的指针
4.1 渐行渐进——多维数组
4.1.1 多维数组的定义
4.1.2 指针的指针
4.1.3 当指针遇上多维数组
4.1.4 知识提示
4.2 不能不说的秘密——main函数的秘密
4.2.1 main函数也是函数
4.2.2 野百合也有春天——main函数的参数
4.2.3 知识提示
第5章 数据结构中指针的应用
5.1 程序蜗居——内存
5.1.1 铁打的营盘流水的兵——动态内存分配
5.1.2 可持续发展——内存的释放
5.1.3 知识提示
5.2 再说队列
5.2.1 有头有尾的队列
5.2.2 无头无尾的循环队列
5.2.3 链式队列
5.2.4 知识提示
5.3 永恒的话题——堆栈
5.3.1 特殊线性表之堆栈
5.3.2 堆栈的存储结构
5.3.3 知识提示
5.4 顺藤摸瓜——链表
5.4.1 链表种种
5.4.2 寻根问祖——链表的建立
5.4.3 链表的操作
5.4.4 知识提示
5.5 C世界的树
5.5.1 C世界的树是这样的
5.5.2 “丫”形的二叉树
5.5.3 今天,你“栽树”了吗——二叉树的创建
5.5.4 一个也不能少——二叉树的遍历
5.5.5 知识提示
第6章 指向文件类型的指针
6.1 动与静——流和文件
6.1.1 流动的“流”
6.1.2 静悄悄的玫瑰——文件
6.1.3 不得不说——文件类型指针
6.1.4 知识提示
6.2 进进出出的I/O
6.2.1 getchar()
6.2.2 gets()
6.2.3 scanf()
6.2.4 putchar()
6.2.5 puts()
6.2.6 printf()
6.2.7 知识提示
6.3 文件加工厂
6.3.1 fopen()
6.3.2 fclose()
6.3.3 fgetc()
6.3.4 fputc()
6.3.5 fgets()
6.3.6 fputs()
6.3.7 fread()
6.3.8 fwrite()
6.3.9 fprintf()
6.3.10 fscanf()
6.3.11 fseek()
6.3.12 rewind()
6.3.13 ftell()
6.3.14 feof()
6.3.15 知识提示
6.4 学以致用
第7章 指针在C语言算法中的应用
7.1 排序杂谈
7.1.1 “7”上“8”下——冒泡排序 144
7.1.2 高效快捷——快速排序
7.1.3 各回各家——直接选择排序
7.1.4 心随我动——直接插入排序
7.1.5 好风凭借力——希尔排序
7.1.6 树形结合——堆排序
7.1.7 分久必合——归并排序
7.1.8 排序方法总结
7.1.9 知识提示
7.2 查找
7.2.1 地毯式搜索——顺序查找
7.2.2 事半功倍——折半查找
7.2.3 集中粉碎——分块查找
7.2.4 知识提示
第8章 典型迷宫算法实例
8.1 迷宫问题
8.1.1 C语言的梦幻家园——迷宫
8.1.2 知识提示
8.2 算法解析
8.2.1 摸着石头过河——回溯法
8.2.2 用回溯法解迷宫问题
8.2.3 原来迷宫可以这样走
8.2.4 知识提示
8.3 指针的应用
8.3.1 “迷宫”里的指针 200
8.3.2 知识提示
第9章 C语言和汇编语言的接口
9.1 不可或缺的保护者——const和volatile
9.1.1 忠诚的卫士——const
9.1.2 不能没有你——volatile
9.1.3 知识提示
9.2 寄存器变量——register
9.2.1 直接快速的访问者——register
9.2.2 知识提示
9.3 寄存器的方方面面
9.3.1 纵观寄存器
9.3.2 寄存器的方方面面
9.3.3 寄存器操作——因“寄存器”而异
9.3.4 知识提示
9.4 C语言与汇编语言混合编程简介
9.4.1 混编方法
9.4.2 汇编语言与C语言混编的几点说明
9.4.3 知识提示
9.5 C语言调用汇编语言
9.5.1 融为一体——嵌套汇编代码
9.5.2 严丝缝合——调用汇编子程序
9.5.3 知识提示
9.6 汇编语言调用C语言
9.6.1 汇编语言主程序调用C语言子程序
9.6.2 应用举例
9.6.3 知识提示
第10章 Linux C编程技术简介
10.1 Linux系统程序设计基础
10.1.1 揭开那神秘的面纱——第一个Linux C程序
10.1.2 得力的助手——gcc
10.1.3 纠错高手——gdb调试器
10.1.4 强力黏合剂——makefile
10.1.5 知识提示
10.2 Linux下的进程控制和进程间通信
10.2.1 Linux进程简介
10.2.2 Linux进程相关函数
10.2.3 Linux进程间通信
10.2.4 知识提示
10.3 Linux下的线程控制
10.3.1 Linux线程的概念
10.3.2 Linux线程的标识
10.3.3 Linux线程的创建
10.3.4 Linux线程的终止
10.3.5 Linux线程的同步
10.3.6 知识提示
10.4 Linux网络编程技术简介
10.4.1 TCP/IP协议简介
10.4.2 套接字编程简介
10.4.3 基本TCP套接字编程简介
10.4.4 基本UDP套接字编程简介
10.4.5 知识提示
第11章 Linux进程与线程通信实例
11.1 生产者—消费者问题简介
11.2 用fork()实现简单的生产者—消费者功能
11.3 用fork()实现较复杂的生产者—消费者功能
11.4 用clone()实现生产者—消费者的功能
11.4.1 互斥量
11.4.2 信号量
11.4.3 clone系统调用
11.4.4 用clone()、信号量、互斥量实现生产者—消费者功能
11.4.5 知识提示
11.5 用pthread_create()实现生产者—消费者的功能
11.6 画龙点睛——fork()、clone()、pthread_create() 的综合比较
第12章 C语言管理系统设计案例
12.1 员工信息管理系统
12.1.1 系统的功能描述
12.1.2 系统的总体设计
12.1.3 详细设计
12.1.4 知识提示
12.2 停车场管理系统
12.2.1 系统的功能描述
12.2.2 系统的总体设计
12.2.3 系统的详细设计
12.2.4 知识提示
第13章 C语言游戏设计案例
13.1 猜字游戏
13.1.1 游戏说明
13.1.2 总体设计
13.1.3 详细设计
13.1.4 知识提示
13.2 扑克游戏
13.2.1 游戏说明
13.2.2 总体设计
13.2.3 详细设计
13.2.4 知识提示