内容简介
第一部分 Microsoft C/C++基本特征
第1章 Microsoft C/C++起步
1.1 Microsoft C/C++磁盘
目录
1.1.1 安装Microsoft C/C++
1.1.2 运行SETUP
1.1.3 DOS模式下SETUP的使用
1.1.4 基于Windows的SETUP的使用
1.1.5 附加库安装
1.1.6 选择内存模式
1.2 程序员工作台(PWB)
1.2.1 PWB初步
1.2.2 PWB菜单和窗口的使用
1.2.2.1 菜单系统
1.3 Microsoft C/C++配置
1.2.2.2 窗口系统
1.3.1 键设置
1.3.2 编辑器设定
1.3.3 颜色
1.3.4 建立选项
1.3.5 设置项目模板
1.3.6 语言选项
1.3.7 连接选项
1.3.8 NMAKE选项
1.4 在PWB内编译并执行程序
1.5 在PWB外编译和连接
1.5.1 /Yc,/Yd,/Yu
1.6 书写第一个C程序
1.6.1 C程序结构
1.6.1.1 预处理器命令
1.6.1.2 全局说明
1.6.1.3 main()函数
1.6.1.4 用户定义函数
1.6.2 利用编辑器编写程序
1.7 库函数介绍
1.7.1 基本输入函数的使用
1.7.1.1 get...()函数
1.7.1.2 scanf()函数
1.7.2 基本输出函数的使用
1.7.2.1 put...()函数
1.7.2.2 printf()函数
1.7.3 格式转换函数的使用
1.7.3.1 atoi()函数
1.7.3.2 toupper()函数
1.9 小结
1.8 练习
第2章 C语言基础
2.1 基本知识介绍
2.1.1 源模块、目标模块和装入模块
2.1.2 程序逻辑与执行流
2.1.2.1 条件语句
2.1.2.2 循环语句
2.2 基本的数据类型
2.2.1 C的基本数据类型
2.2.1.1 整数
2.2.1.2 浮点数
2.2.1.3 字符数据
2.2.2 在何处定义数据对象
2.3 编写C表达式和语句
2.3.1 表达式和语句
2.3.2 C运算符集介绍
2.4.1 隐含类型转换
2.4 类型转换控制
2.4.2 显式类型转换
2.5 C语言宏
2.5.1 定义类对象宏
2.5.2 定义类函数宏
2.6 练习
2.7 小结
第3章 C函数的使用
3.1 main()函数和库函数
3.1.1 编写main函数
3.1.2 库函数
3.1.2.1 有哪些库函数
3.1.2.2 在程序中嵌入库函数
3.2.1 书写函数原型
3.2 编写自己的函数
3.2.2 向函数传递参数
3.3 从函数返回值
3.3.1 定义和使用函数类型
3.3.2 把函数当作对象使用
3.4 存储类
3.4.1 变量作用域
3.4.2 变量生存期
3.4.3 变量的连接性
3.5 高级程序控制逻辑
3.5.1 编写循环控制语句
3.5.1.1 goto语句
3.5.1.2 break语句
3.5.1.3 continue语句
3.5.2.1 exit()和abort()函数
3.5.2 改变程序运行流程
3.5.2.2 system(),exec…()和spawn…()
3.6 可变参数表
3.6.1 设计可变参数表
3.6.2 va...()函数
3.7 练习
3.8 小结
第4章 指针和派生类型
4.1 标准C的派生类型
4.1.1 C的类型分类
4.1.2 从老类型生成新类型
4.2 C指针
4.2.1 间接寻址
4.2.2 C的间接引用和地址运算符
4.3.1 声明和使用数组对象
4.3 数组和字符串的使用
4.3.2 C的字符串
4.4 结构和联合
4.4.1 用不同类型组成结构
4.4.2 用联合改变结构和对象的面貌
4.5 函数指针
4.5.1 声明和初始化函数指针
4.5.2 用指针引用调用函数
4.6 动态存储的指针
4.6.1 C程序和动态存储
4.6.2 动态内存
4.7 练习
4.8 小结
第5章 Microsoft C/C++程序的构造、编译和测试
5.1 在一个程序中使用多个源文件
5.1.1 一个源文件包括哪些函数
5.1.3 生成项目文件
5.1.2 建立Microsoft C/C++项目文件
5.2 外部引用
5.2.1 关键字extern的使用
5.2.2 外部函数的使用
5.3 为外部模块编写头文件
5.3.1 确定头文件的内容
5.3.2 嵌入用户提供的头文件
5.4 在头文件中使用条件编译指令
5.5 在PWB下编译和运行程序
5.5.1 编译和运行简单程序
5.5.2 编译和运行复杂程序
5.6 NMAKE实用程序
5.6.1 NMAKE使用举例
5.7.1 命令行
5.7 注意:列出所有文件
5.6.2 显式规则
5.7.2 推理规则
5.7.3 宏
5.7.4 条件指示
5.8 练习
5.9 小结
第6章 Microsoft C/C++I/O函数库
6.1 I/O概念
6.1.1 文件和设备
6.1.2 文件和流
6.1.3 文件和二进制流
6.2 用标准流进行I/O
6.2.1 格式化I/O函数
6.2.1.1 scanf()函数
6.2.1.2 printf()函数
6.2.2 字符I/O函数
6.3 文件控制函数
6.3.1 打开、关闭和控制文件
6.3.2 控制文件缓冲区
6.4 直接文件I/O函数
6.4.1 直接I/O的概念
6.4.2 直接读写文件
6.5 文件定位函数
6.5.1 获取当前文件位置
6.5.2 设置新的文件位置
6.6 处理文件I/O错误
6.6.1 检测文件I/O错误
6.6.2 显示和清除文件I/O错误
6.7 练习
6.8 小结
7.1.1 段、节和偏移量
7.1 80x86体系结构介绍
第7章 存储模式的使用
7.1.2 CPU地址寄存器
7.2 near、far和huge指针
7.2.1 选择需要的指针大小
7.2.2 near、far和huge说明符
7.3 Microsoft C/C++六种存储模式
7.3.1 确定使用何种存储模式
7.3.2 用混合模式编程
7.4 生成.COM可执行文件
7.4.1 .COM文件
7.5 Microsoft C/C++的覆盖虚拟环境
7.5.1 覆盖管理程序的功能
7.5.2 MOVE
7.6 设计并生成覆盖程序
7.6.1 确定覆盖哪些模块
7.6.2 编译和连接覆盖程序
7.7 虚拟内存
7.7.1 _vlock()的使用
7.7.2 释放虚拟存储块
7.7.3 结束虚拟存储管理
7.8 练习
7.9 小结
第8章 Microsoft C/C++视频函数
8.1 IBM/PC的文本模式
8.1.1 PC机视频适配器和屏幕简介
8.1.2 屏幕I/O的内存映像
8.2 对文本屏幕的控制
8.2.1 选择视频模式
8.2.2 选择文本颜色
8.2.3 显示文本颜色
8.3 窗口函数
8.3.1 在屏幕指定位置显示文本
8.3.2 判断当前文本模式的设置
8.3.3 判断当前文本颜色的设置
8.3.4 判断当前文本窗口的边界
8.3.5 判断当前文本输出的位置
8.3.6 判断其它屏幕属性
8.4 IBM/PC的图形模式
8.4.1 像素和调色板
8.4.2 调色板
8.4.3 CGA调色板
8.4.4 选择背景颜色
8.4.5 从当前调色板中选择颜色
8.4.6 CGA高分辨率模式
8.4.7 EGA/VGA视频模式下的颜色选择
8.4.8 设置VGA调色板
8.4.10 设置EGA调色板
8.4.9 设置MCGA调色板
8.5 图形绘制函数简介
8.5.1 _setvieworg()
85.2 _setviewport()
8.5.3 窗口坐标
8.6 绘图和填充函数
8.6.1 绘制填充图形函数
8.6.2 绘图控制函数
8.6.3 _getcurrentposition()
8.6.4 _setlinestyle()
8.6.5 _setfillmask()
8.6.6 清除图形显示屏幕
8.6.7 图形屏幕的控制
8.7 在图形模式下使用文本
8.7.1 字模
8.7.2 图形模式文本函数
8.7.3 Microsoft Windows的字模
8 7.4 其它字模函数
8.8 练习
8.9 小结
第9章 CodeView和Profiler
9.1 创建调试
9.1.1 找毛病与调试
9.1.2 准备从PWB中运行Code view
9.2 Code view调试器
9.2.1 用code view运行程序
9.2.2 混合源和汇编语言
9.2.3 命令窗口
9.2.4 观察数据
9.3 设置断点
9.4.2 剖视过程
9.4 Microsoft Profiler
9.4.1 什么叫剖视
9.4.3 启动Microsoft Profiler
9.4.4 基本的剖视信息
9.4.5 改进ptestl
9.4.6 选择一个剖视模式
9.4.7 其它剖视性能的展望
9.5 练习
9.6 小结
第10章 Microsoft C/C++的高级功能
10.1 内联的汇编语言
10.1.1 内联的汇编环境
10.1.2 _ _asm关键字
10.2.1 80x86中断结构
10.2.2 Microsoft中断接口
10.2 中断功能
10.3 中断处理程序
10.3.1 声明中断处理程序的函数
10.3.2 完成计时器计时中断处理程序
10.4 程序优化性能
10.5 p-代码
10.6 练习
10.7 小结
第二部分 Microsoft C/C++面向对象特征
第11章 C++类的使用
11.1 C++的重要特点
11.2 如何利用C++的特征
11.3 C和C++的派生类型
11.3.1 在C++中重新定义“派生”
11.3.2 C++的封装
11.3.3 用struct声明类
11.4 声明C++类
11.4.1 类声明
11.4.1.1 类声明语法
11.4.1.2 声明类成员
11.4.1.3 建立一个后进先出(LIFO)栈类
11.4.1.4 this指针
11.4.2 public、private、protected关键字
11.5 为类写成员函数
11.5.1 成员函数与类的联系
11.5.1.1 单独编译成员函数
11.5.1.2 声明内联成员函数
11.5.1.3 为成员函数指定缺省参数
11.5.2 提供构造和析构函数
11.6.1 在类中包含友元函数
11.6 友元函数
11.6.2 何时使用友元函数
11.7 练习
11.8 小结
第12章 创建C++对象
12.1 定义C++对象
12.1.1 给类对象指定存储类
12.1.2 定义任意生存期的类对象
12.1.3 定义局部(auto)类对象
12.1.4 定义全局(static)类对象
12.2 初始化类对象
12.2.1 使用构造函数初始化类对象
12.2.2 使用初始程序表
12.3 练习
12.4 小结
13.1.1 作用域限定符的一般使用
13.1 作用域限定符
第13章 访问C++对象
13.1.2 利用作用域限定符进行语法控制
13.1.3 利用作用域限定符避免二义性
13.2 C++的作用域规则
13.2.1 C与C++作用域的区别
13.2.2 考察C++的作用域规则
13.3 与C++对象通讯
13.3.1 向对象发送消息
13.3.2 *this
13.4 引用运算符
13.4.1 从地址运算符演变到引用运算符
13.4.2 引用运算符
13.5 将对象用作函数参数
13.5.1 通过值和引用传递对象
13.5.2 在成员函数中访问其它对象
13.6.1 什么时候需要用指针
13.6 对象指针
13.6.2 声明对象指针和数组
13.7 练习
13.8 小结
第14章 C++的重载函数和运算符
14.1 重载成员函数
14.1.1 C++的重载
14.1.2 声明重载的成员函数
14.2 重载友元和非成员函数
14.2.1 重载类的友元
14.2.2 重载非成员函数
14.3 类型的安全连接
14.3.1 函数规整
14.3.2 带有标准C中lnclude文件时的连接控制
14.4.1 运算符的重载
14.4 重载C++的运算符
14.4.2 声明重载运算符函数
14.4.2.1 为运算符函数作准备
14.4.2.2 重载运算符函数的语法
14.4.2.3 说明重载运算符函数的参数
14.4.2.4 说明运算符函数的返回类型
14.4.2.5 用友元函数重载运算符
14.4.2.6 定义类型转换运算符函数
14.4.3 重载双目和单目运算符
14.5 重载下标和函数调用运算符
14.5.1 重载的下标运算符
14.5.2 重载函数调用运算符
14.6 练习
14.7 小结
15.1 C++构造函数和析构函数的调用
第15章 C++的构造函数和析构函数
15.1.1 声明构造函数和析构函数
15.1.1.1 声明构造函数
15.1.1.2 声明析构函数
15.1.2 构造函数初始化表
15.1.3 什么时候调用构造函数
15.1.4 什么时候调用析构函数
15.2 重载构造函数
15.3 编写缺省构造函数
15.3.1 编写其它构造函数
15.3.2 决定何时需要使用拷贝构造函数
15.4 运算符new()和 delete()
15.4.1 new和delete的一般使用
15.4.2 动态生成和删除类对象
15.5 重载运算符new()和delete()
15.5.1 重载全局运算符
15.5.2 为类重载运算符
15.6 练习
15.7 小结
第16章 C++流的使用
16.1 C++流的介绍
16.1.1 C++流和标准流的比较
16.1.2 使用C++流来操作标准I/O
16.2 处理C++流错误
16.2.1 C++流错误状态的检测
16.2.2 流状态成员函数
16.3 C++流控制数据格式
16.3.1 使用插入符和提取符来操作内部类型
16.3.2 重载〈〈和〉〉运算符
16.4.1 熟悉C++操作符
16.4 C++流操作符
16.4.2 使用流操作符改变状态和属性
16.5 C++文件I/O流
16.5.1 读和写fstream文件
16.5.2 用C++流进行文件定位
16.6 练习
16.7 小结
第17章 C++派生类
17.1 非继承的代码复用
17.1.1 代码可复用性
17.1.2 通过组合复用代码
17.2 单基类
17.2.1 对继承的理解
17.2.2 声明基类和派生类
17.3 虚拟函数
17.3.1 延迟约束和虚拟函数
17.3.2 使用作用域限定控制成员函数的存取
17.4.1 从重基类中派生
17.4 重基类
17.4.2 声明和使用虚拟基类
17.5 从抽象类派生类
17.5.1 纯虚拟函数
17.5.2 实现纯虚拟函数
17.6 通过继承使用构造函数和析构函数
17.6.1 初始化代码不能继承
17.6.2 通过继承调用构造函数和析构函数的次序
17.6.3 虚拟析构函数
17.7 练习
17.8 小结
18.1 用户定义的类型转换
18.1.1 用构造函数进行类型转换
第18章 关于对象控制与执行的讨论
18.1.2 重载型强制运算符
18.2 类属类
18.2.1 抽象类和类属类的设计
18.2.2 生成类属类
18.3 对象行为与执行的控制
18.3.1 用友元函数获得高效率
18.3.2 用静态存储类避免反复的具体说明
18.3.3 引用和指针
18.3.4 用内联函数消除函数调用
18.4 源代码浏览器
18.4.1 找到未引用的标识符
18.4.2 调用树
18.5 练习
18.6 小结
19.1 Windows编程环境
第19章 Microsoft C/C++的Windows编程介绍
第三部分 使用Windows的Microsoft C/C++
19.1.1 QuickWin库
19.1.2 编译order.c程序
19.1.3 运行QuickWin应用程序
19.1.4 QuickWln的特殊功能
19.1.5 增加多窗口
19.2 创建子窗口的另一方法
19.2.1 从窗口中退出
19.2.2 About框
19.2.3 控制窗口的大小和位置
19.2.4 在子窗口上加上滚动条
19.2.5 菜单栏函数
19.3 在Windows应用编程接口中编程
19.4 Windows多任务环境
19.5 Windows是一个面向对象的环境
19.6 编译和连接Windows应用程序
19.6.1 使用PWB编译和连接Windows应用程序
19.6.2 cl命令行编译器
19.6.3 资源编译器
19.7 准备资源文件
19.7.1 创建资源
19.7.2 fcwin.c样本程序所需要的资源
19.7.3 创建和编辑菜单
19.7.4 创建和编缉对话框
19.7.5 创建和编辑图标
19.7.6 用资源编译器编译资源
19.8 练习
19.9 小结
20.1 设置Windows应用程序环境
20.1.1 WINSTUB.EXE程序
第20章 设计Windows应用程序
20.1.2 Windwos目录的使用
20.1.3 边做边学习:设计fcwin.c
20.2 生成Windows应用程序的源文件
20.2.1 Windows 3.1编程环境
20.2.2 创建模块定义文件
20.2.3 设计程序的头文件
20.2.4 创建FCWIN的工程文件
20.3 练习
20.4 小结
第21章 用Microsoft C/C++编写Windows应用程序
21.1 Windows接口设计
21.1.1 登记窗口类
21.1.2 建立主消息循环
21.1.3 编写Wndproc()函数
21.1.4 为对话框建立回调函数
21.1.4.1 创建对话函数
21.1.4.2 控制对话
21.1.5 使用MessagcBox()生成弹出式帮助信息和错误信息
21.1.6 将硬拷贝以假脱机方式送给Windows打印管理程序
21.2 动态连接库
21.2.1 动态连接库的概念
21.2.2 书写DLL应用程序
21.3 练习
21.4 小结
附录
附录A ASCII字符图表
附录B printf()和scanf()的使用细节
附录C _exec...()和_spawn()的使用细节
附录D quad类的程序清单
附录E 完整的FCWIN资源清单