C/C++/C#程序员实用大全:C/C++/C#最佳编程指南

C/C++/C#程序员实用大全:C/C++/C#最佳编程指南
作 者: Kris Jamsa 张春晖 刘大庆 李越 张春晖
出版社: 中国水利水电出版社
丛编项: 万水计算机技术实用大全系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《C/C++/C#程序员实用大全:C/C++/C#最佳编程指南》作者简介

内容简介

本书通过对大量程序实例的分析,深入浅出地讲解了C/C++/C#语言基本知识、编译方法和程序设计技术,并给出了众多的编程技巧与应用。全书首先介绍了C语言的基本知识,对C语言编程的实际方法、技巧,以及常见的问题和难点进行了详细阐述和解答;然后逐步过渡到C++编程与Windows编程,用较大的篇幅对它们进行了深入地剖析:最后介绍了基于.NET环境的C#编程。无论是C/C++/C#的初学者还是资深程序员都能从中受益匪浅。本书是广大程序员、编程自学者学习和掌握C/C++/C#编程的优秀指南。

图书目录

精华版序

译者序

第一章 C语言入门

1 典型的C程序结构

2 C语言区分大小写字母

3 帮助编译器查找头文件

4 注释程序

5 变量

6 给变量赋值

7 变量类型

8 定义同一类型的多个变量

9 给变量赋初值

10 C关键字

11 整型变量

12 字符型变量

13 浮点型变量

14 双精度型变量

15 给浮点型变量赋值

16 类型标识符

17 联合使用无符号和长类型标识符

18 寄存器类型标识符

19 有符号类型标识符

20 创建用户自己的类型

21 赋给十六进制或八进制值

22 溢出

23 赋值为引号或其他字符

24 PRINTF入门

25 打印八进制或十六进制整数

26 用PRINTF显示无符号整型数值

27 用PRlNTF显示长整型数值

28 用指数格式显示浮点数

29 显示浮点数

30 在数值前添加正号和负号

31 用PRlNTF格式化整数值

32 O填充整数输出

33 在八进制和十六进制数前显示前缀.

34 用PRINTF格式化浮点数

35 格式化指数输出

36 左对齐PRINTF的输出

37 显示NEAR和FAR字符

38 使用PRINTF的转义字符

39 使用PRINTF的返回值

40 使用ANSI设备驱动器

41 用ANSI驱动器显示屏幕颜色

42 用ANSI驱动器定位光标

43 在C中作基本的数学运算

44 模运算(取余运算)

45 运算符的优先级和结合性

46 C的自增运算符

47 按位或运算

48 按位与运算

49 按位异或运算

50 “取反”运算

51 C的条件运算符

52 C的长度(SIZEOF)运算符

53 移位运算

54 位循环运算

55 C如何表示真(TRUE)和假(FALSE)

56 用if判断条件

57 判断是否相等

58 关系判断

59 用逻辑与判断两个条件

60 用逻辑或来判断两个条件

61 逻辑非运算

62 将条件结果赋值给变量

63 判断浮点数

64 按规定次数执行语句

65 无穷循环

66 在FOR循环中使用逗号运算符

67 用WHILE循环重复执行一条或多条语句

68 使用DO重复执行一条或多条语句

69 C的CONTINUE语句

70 使用C的BREAK语句来结束循环

71 GOTO语句分支

72 判断多个条件

73 在SWITCH中使用BREAK

74 使用SWITCH语句的DEFAULT CASE

第二章 宏与常量

75 在程序中定义常量

76 使用FILE预处理器常量

77 使用LINE预处理器常量

78 改变预处理器的行计数

79 记录预处理器的日期和时间

80 判断是否进行ANSIC编译

81 判断是C++还是C

82 取消宏或常量

83 比较宏与函数

84 编译器PRAGMAS

85 使用#INCLUDE<FILENAME.H>与#INCLUDE“FILENAME.H”

86 判断符号是否被定义

87 进行IF-ELSE预处理

88 更强大的预处理器条件判断

89 实现IF-ELSE和ELSE-IF预处理

90 定义需要多行的宏和常量

91 创建自定义宏

92 创建M1N和MAX宏

93 创建SQUARE和CUBE宏

94 注意宏定义中的空格

95 如何使用括号

96 宏是没有类型的

第三章 字符串

97 C字符串的形象化

98 C是如何存储字符串的

99 在字符串常量内表示引号

100 使用STRLEN函数

101 字符串的复制

102 字符串的连接

103 给字符串追加N个字符

104 判断两个字符串是否相同

105 比较字符串时忽略大小写

106 将字符串转换成大写或小写

107 获取字符串中第一次出现的某个字符

108 搜索字符在字符串中的末次出现

109 计算字符串中某个字符出现的次数

110 比较两个字符串

111 比较两个字符串的前N个字符

112 不考虑大小写比较字符串

113 将字符串转换成数字

114 复制字符串的内容

115 在字符串中查找子字符串

116 计算子字符串出现的次数

117 获取子字符串的最右端出现

118 从字符串中删除子字符串

119 用另一个子字符串代替子字符串

120 转换数值的ASCII码形式

121 判断字符是否为字母或数字

122 判断字符是否为字母

123 判断字符是否包含ASCII值

124 判断字符是否为控制符

125 判断字符是否为数字

126 判断字符是否为图形字符

127 判断字符是大写还是小写

128 判断字符是否可打印

129 判断字符是否为标点符号

130 判断字符是否包含空白符(whitespace)

131 判断字符是否为十六进制值

132 将字符转换成大写形式

133 使用ASCII字符

134 将输出格式写进字符串变量

135 从字符串中读输入

136 标志字符串以节省空间

137 初始化字符串

第四章 函数

138 函数

139 把MAIN当作函数

140 函数返回值

141 形参和实参

142 解决名称冲突

143 局部变量

144 函数如何使用堆栈

145 C如何存储局部变量

146 声明全局变量

147 传值调用

148 使用传值调用防止参数值变化

149 传址调用

150 获取地址

151 使用变量的地址

152 改变参数的值

153 只改变指定参数

154 使用堆栈进行传址调用

155 记住函数变量的值

156 C是如何初始化静态变量的

157 使用PASCAL调用顺序

158 PASCAL关键字的影响

159 混合编程示例

160 CDECL关键字

161 判断是否要使用递归

162 如何消除递归

163 形式参数中的CONST

164 使用CONST不会阻止参数值的修改

165 无界字符串的声明

166 C是如何使用堆栈处理字符串参数的

167 外部变量

168 外部静态变量

169 VOLATILE关键字

170 调用结构和基指针

171 调用汇编语言函数

172 从汇编语言函数中返回值

173 AUTO关键字

174 支持参数个数可变的函数

175 VA START、VA ARG和VA END是如何工作的

176 创建支持多参数多类型的函数

第五章 键盘操作

177 从键盘读入字符

178 显示字符输出

179 将键盘输入赋给字符串

180 使用直接I/O读入字符

181 不显示字符的直接键盘输入

182 直接输出

183 将按键放回键盘缓存

184 使用CPRINTF快速格式化输出

185 快速格式化键盘输入

186 写字符串

187 使用直接I/O实现更快的字符串输出.

188 从键盘读入字符串

189 以更快的速度从键盘输入字符串

190 清除屏幕显示

191 删除当前行到行尾的内容

192 删除屏幕上的当前行

193 定位光标进行屏幕输出

194 判断行与列的位置

195 在屏幕上插入空行

196 将屏幕上的文本拷贝到缓冲区

197 将缓冲区中的文本拷贝到屏幕的指定位置

198 判断文本模式设置

199 控制屏幕颜色

200 指定背景色

201 使用TEXTCOLOR设置前景色

202 使用TEXTBACKGROUND设置背景色

203 控制文本的明暗度

204 决定当前文本模式

205 在屏幕上移动文本

206 定义文本窗口

第六章 数学

207 使用整型表达式的绝对值

208 使用ARCCOSINE(反余弦)

209 使用ARCSINE(反正弦)

210 使用ARCTANGENT(反正切)

211 求复数的绝对值

212 对浮点值进位舍入

213 使用角的余弦

214 使用角的正弦

215 使用角的双曲正弦

216 使用角的正切

217 使用角的双曲正切

218 整数相除

219 使用指数

220 使用浮点型表达式的绝对值

221 使用浮点余数

222 使用浮点值的尾数和指数

223 计算自然对数

224 判断最大值与最小值

225 把浮点值分解成整数和小数部分

226 计算xn的结果

227 生成随机数

228 将随机值映射到指定范围

229 给随机数生成器赋初值

230 计算数值的平方根

231 创建定制的数学错误处理程序

第七章 文件、目录和磁盘

232 判断当前盘驱动器

233 选择当前驱动器

234 判断可用的盘空间

235 读入文件分配表(FAT)信息

236 绝对扇区读写操作

237 进行BIOS磁盘I/O

238 测试软驱是否准备好

239 应用FOPEN打开文件

240 FILE结构

241 关闭一个打开的文件

242 每次读/写文件信息的一个字符

243 文件指针的位置指针

244 判断当前文件位置

245 文件翻译

246 文件句柄(FILE HANDLES)

247 从流指针中导出文件句柄

248 重命名文件

249 删除文件

250 判断程序如何访问文件

251 设置文件的访问模式

252 检测文件流错误

253 判断文件的长度

254 刷新I/O流

255 一次关闭所有被打开的文件

256 使用P TMPDIR创建临时文件名

257 使用TMP或TEMP创建临时文件名

258 创建真正的临时文件

259 删除临时文件

260 为文件搜索命令路径

261 为文件搜索环境入口的子目录

262 打开TEMP目录中的文件

263 最小化文件I/O操作

264 改变当前目录

265 创建目录

266 删除目录

267 删除目录树

268 建立完全路径名

269 分解目录路径

270 建立路径名

271 使用低级函数打开和关闭文件

272 创建文件

273 进行低级读写操作

274 为文件句柄翻译指定模式

275 利用LSEEK定位文件指针

276 使用DOS文件服务

277 获取文件的日期和时间标记

278 设置文件的日期与时问标记

279 把文件日期和时间设置成当前日期和时间

280 每次读写一个字

281 改变文件的长度

282 控制文件打开操作的读写模式

283 将缓冲区赋给文件

284 分配文件缓冲区

285 利用MKTEMP创建惟一文件名

286 读写结构

287 从文件流中读取结构数据

288 复制文件句柄

289 强制文件句柄设置

290 把文件句柄和文件流联系起来

291 文件共享

292 打开文件进行共享访问

293 锁定文件内容

294 获取更精细的文件锁定控制

295 使用DOS目录

296 打开目录

297 递归读取磁盘文件

298 判断当前文件位置

299 打开共享文件流

300 在指定目录中创建惟一文件

301 创建新文件

302 强制二进制或文本文件打开

303 按行读文本

304 按行写文本

305 应用FGETS和FPUTS

306 强制二进制文件翻译

307 判断文件结尾

308 舍弃字符

309 读取格式化的文件数据

310 根据当前位置定位文件指针

311 获取文件句柄信息

312 重新打开文件流

第八章 数组、指针和结构

313 声明数组

314 初始化数组

315 使用常量定义数组

316 为大数组使用HUGE内存模式

317 多维数组

318 给二维数组元素赋初值

319 把多维数组当作一维数组

320 联合

321 使用联合节省内存

322 使用REGS——一种典型的联合

323 应用REGS联合

324 位字段结构

325 在数组中查找指定的值

326 冒泡排序法

327 选择排序法

328 SHELL(希尔)排序法

329 快速排序法

330 利用LFIND搜索字符串

331 利用LSEARCH搜索数值

332 利用BSEARCH搜索已排序数组

333 利用QSORT对数组排序

334 判断数组元素的个数

335 判断变量的地址

336 声明指针变量

337 间接访问指针

338 指针与函数参数的使用

339 指针运算

340 指针的增值与减值

341 利用指针遍历数组

342 使用返回值为指针的函数

343 创建返回值为指针的函数

344 指针数组

345 遍历字符串数组

346 把字符串数组当成指针

347 使用指向一个指向字符串的指针的指针

348 利用指针声明字符串常量

349 VOID类型指针

350 创建指向函数的指针

351 使用指向函数的指针

352 使用三级指针

353 结构

354 用不同的方式声明结构

355 结构成员

356 形象表示结构

357 应用结构

358 把结构传递给函数

359 在函数内部改变结构

360 (*POINT).MEMBER间接引用

361 使用POINTER—MEMBER格式

362 初始化结构

363 使用嵌套结构

364 包含数组的结构

365 创建结构数组

第九章 DOS和BIOS服务

366 DOS系统服务

367 BIOS服务

368 寄存器

369 标志寄存器

370 软件中断

371 利用BIOS访问指针

372 CONTROL+BREAK信息

373 可能的DOS副作用

374 暂时挂起程序

375 控制声音

376 获取国家专用的信息

377 磁盘传输地址

378 访问和控制磁盘传输区

379 BIOS键盘服务

380 获取BIOS设备列表

381 控制串行口 I/O

382 利用BDOS访问DOS服务

383 获取扩展DOS错误信息

384 判断BIOS常规内存数量

385 创建远指针(FAR PRINTER)

386 把远端地址分解为段地址和偏移地址

387 判断自由核心内存

388 读段寄存器设置

第十章 内存管理

389 内存的类型

390 常规内存

391 常规内存的分布

392 为什么PC和DOS限制于1MB

393 从段和偏移量中产生地址

394 扩充内存

395 使用扩充内存

396 实模式和保护模式

397 访问扩展内存

398 高端内存区

399 堆栈

400 各种堆栈配置

401 判断程序的当前堆栈大小

402 使用STKLEN控制堆栈空间

403 给内存区域赋值

404 拷贝内存区域

405 拷贝内存区域直到某指定字节

406 比较两个无符号字符数组

407 交换两个相邻字符串字节

408 分配动态内存

409 再谈类型转换

410 释放内存

411 利用CALLOC函数分配内存

412 堆

413 解决64Kb堆限制

414 从堆栈中分配内存

415 分配巨型数据

416 改变被分配内存区域的大小

417 BRK函数

418 快速堆检测

419 填充自由堆空间

420 检测特定的堆入口

421 遍历堆入口

422 访问指定内存单元

423 向内存中置数

424 PC端口

425 访问端口值

426 CMOS

427 内存模式

428 微型内存模式

429 小型内存模式

430 中型内存模式

431 压缩内存模式

432 大型内存模式

433 巨型内存模式

434 判断当前的内存模式

第十一章 日期和时间

435 获取当前日期与时间

436 延迟若干毫秒

437 判断程序的耗时

438 比较两个时间

439 获取日期数据串

440 获取时间串

441 读BIOS计时器

442 使用当地时间

443 使用格林威治平时

444 获取DOS系统时间

445 获取系统日期

446 设置DOS系统时间

447 设置DOS系统日期

448 把DOS日期转换为UNIX格式

449 利用TIMEZONE计算时差

450 判断当前时区

451 利用TZSET设置时区区域

452 利用TZ环境入口

453 从用户程序中设置TZ环境入口

454 获取时区信息

455 以秒钟的形式设置自1/1/1970午夜以来的系统时间

456 把日期转换成自1/1/1970以来的秒数

457 判断日期的儒略历日期

458 创建格式化日期和时间串

459 PC时钟类型

第十二章 重定向I/O和进程命令行

460 等候按键

461 提醒用户输入密码

462 自己编写密码函数

463 输出重定向

464 输入重定向

465 联合使用INPUT和OUTPUT重定向

466 利用STDOUT和STDIN

467 管道(pipe)运算符

468 GETCHAR和PUTCHAR

469 确保信息出现在屏幕上

470 自定义MORE命令

471 防止I/0重定向

472 应用STDPRN文件句柄

473 把重定向输出分割到一个文件中

474 应用STDAUX文件句柄

475 命令行变元

476 从命令行中显示文件内容

477 把ARGV当作指针

478 C是如何知道命令行的

479 环境

480 把ENV当作一个指针

481 使用命令行数字

482 出口状态值

483 为出口状态过程使用RETURN

484 在环境中搜索特定入口

485 DOS是如何对待环境的

486 应用ENVIRON全局变量

487 给当前环境添加入口

488 给DOS环境添加元素

489 退出当前程序

490 定义在程序结束时执行的函数

第十三章 编程工具

491 库

492 重复使用目标代码

493 创建库文件

494 常用的库操作

495 列出库文件中的子例行程序

496 库管理程序的其他功能

497 连接器

498 连接器的功能

499 使用连接映像

500 使用连接器响应文件

501 使用MAKE命令简化应用程序的创建

502 生成一个简单的MAKE文件

503 通过MAKE使用多依赖性文件

504 说明用户的MAKE文件

505 MAKE和命令行

506 在MAKE文件中放置多个依赖性

507 显现的和隐含的MAKE法则

508 使用MAKE宏

509 预定义MAKE宏

510 用MAKE执行条件进程

511 验证一个MAKE宏

512 再次包含一个MAKE文件

513 使用MAKE的宏修饰符

514 因错误结束MAKE文件

515 关闭命令显示

516 使用文件BUILTINS.MAK

517 在MAKE中执行出口状态进程

518 同时激活和改变一个宏

519 为多个依赖文件执行一个MAKE命令

第十四章 高级C语言编程

520 判断是否有数学协处理器

521 理解CTYPE.H,ISTYPE宏

522 检查系统和路径错误

523 显示预定义的错误信息

524 决定操作系统版本

525 执行一个非本地的GOT0

526 获得进程ID(PID)

527 激活一个内部的DOS命令

528 使用PSP全局变量

529 在变量声明中使用CONST修饰符

530 使用枚举类型

531 分配一个特殊的值给枚举类型

532 保存和恢复寄存器

533 动态列表简介

534 声明一个链接的列表结构

535 增加一个列表入口

536 插入一个列表入口

537 从一个列表中删除一个元素

538 使用一个双向链表

539 创建一个简单的双向链表

540 理解NODE->PREVIOUS->NEXT..

541 从一个双向链表中移走一个元素

542 在一个双向链表中插入一个元素

543 理解子进程

544 派生一个子进程

545 使用其他的SPAWNLXX函数

546 使用SPAWNVXX函数

547 执行一个子进程

548 使用其他的EXECLXX函数

549 使用EXECVXX函数

550 理解覆盖

551 理解中断

552 PC机的中断

553 使用中断关键字

554 判断一个中断向量

555 设置一个中断向量

556 使能与禁止中断

557 生成简单的中断处理器

558 链接一个二次中断

559 生成一个中断

560 捕获PC机时钟

561 C语言中的致命错误处理

562 一个更完全的致命错误处理器

563 恢复改变过的中断

564 生成一个Ctrl+Break处理器

565 在用户的致命错误处理器中使用DOS服务

566 直接插入内联函数

567 使能和禁止内联函数

568 理解快速函数调用

569 FASTCALL参数传递的法则

570 消除普通的子表达式

571 理解初始化值

572 理解连接

573 理解左值(LVALUE)

574 理解右值(RVALUE)

575 使用段寄存器关键字

576 谨慎使用远指针

577 数学协处理器语句

578 理解变量中的CDECL和PASCAL

579 防止循环包含

第十五章 C++入门

580 C++介绍

581 理解COUT UO流

582 使用COUT输出值和变量

583 显示十六进制和八进制数值

584 输出到CERR

585 用CIN得到输入

586 使用CLOG实现输出

587 CIN、COUT、CERR CLOG是类的实例

588 使用FLUSH操纵符快速输出

589 C++增加的新关键字

590 分辨全局范围

591 提供缺省参数值

592 控制COUT的输出宽度

593 使用SETW设置COUT宽度

594 指定COUT的填充字符

595 左对齐和右对齐COUT的输出

596 控制COUT显示浮点数字的数目

597 以小数或科学记数格式显示数值

598 恢复COUT至默认值

599 设置输入输出基数

600 在需要的地方定义变量

601 在函数原型中放置默认参数值

602 使用按位运算符及COUT

603 在C++中使用ENUM关键字

604 用NEW分配内存

605 使用FAR指针和NEW运算符

606 释放内存至自由空间

607 理解C++中的引用

608 给函数传递引用

609 防止隐藏对象

610 用三种方法传递参数

611 使用引用的规则

612 函数可返回引用

613 使用INLINE关键字

614 使用C++的ASM关键字

615 用CIN读字符

616 用COUT写字符

617 文件结束测试

618 用ENDL产生新行

619 理解连接规范

620 理解重载

621 重载函数

622 重载函数的第二个例子

623 避免不明确的重载

624 使用C1N每次读一行

625 改变NEW运算符的缺省处理器

626 用SET NEW HANDLER函数设置NEW处理器

627 判断C++编译

628 理解C++中的结构

629 结构中定义函数成员

630 在结构内定义成员函数

631 在结构外定义成员函数

632 给成员函数传递参数

633 不同结构具有同名函数成员

634 同名成员不同函数

第十六章 对象

635 对象

636 把程序分解成对象

637 理解C++的类

638 理解封装

639 理解多态性

640 理解继承

641 类和结构的选择

642 创建简单类模型

643 实现简单类的程序

644 定义类构件

645 理解作用域分辨符

646 在声明中使用或省略类名

647 理解PUBLIC:标志

648 理解PRIVATE:标志

649 理解PROTECTED:标志

650 公有方法常称为接口函数

651 对象实例共享代码

652 全局分辨符

653 类初始化

654 另一种类初始化方法

655 理解静态类成员

656 静态数据成员

657 静态成员函数

658 成员函数声明

659 内联函数声明

660 决定内联和非内联函数的使用

661 类和联合

662 匿名联合

663 友元函数

第十七章 常见的类函数

664 构造函数

665 使用构造函数

666 构造函数的缺省参数

667 重载构造函数

668 获得重载函数的地址

669 析构函数

670 程序何时调用析构函数

671 使用复制构造函数

672 显式构造函数

673 局部类

674 构造函数和类数组

675 运算符重载

676 创建运算符成员函数

677 重载加运算符

678 重载前置和后置增量运算符

679 用友元函数重载运算符

680 用友元函数重载++或--运算符

681 用友元函数重载运算符的原因

682 重载NEW运算符

683 重载DELETE运算符

684 重载数组下标运算符[]

685 重载函数调用运算符()

686 重载指针运算符->

687 重载逗号运算符

688 取消输入前的空格

689 在头文件中定义类

690 创建初始化的类数组

691 内联类代码允许改变

692 静态存储区

第十八章 用C++输入输出

693 I/O流操作和STDIO同步

694 用IOS成员格式化输入和输出

695 设置格式标志

696 清除格式标志

697 重载SETF函数

698 检测当前格式标志

699 使用PRECISION函数

700 使用FILL函数

701 理解操纵算子

702 用操纵算子格式化I/O

703 重载抽取运算符

704 重载COUT的插入运算符的另一种方法

705 打开文件流

706 读和写文件流数据

707 把文件流操作放到一起

708 执行二进制拷贝操作

709 流缓冲类

710 用READ读二进制数据

711 用WRITE写二进制数据

712 使用GCOUNT成员函数

713 使用重载的GET 数

714 使用GETLINE方法

715 文件结束的检测

716 使用IGNORE函数

717 使用PEEK函数

718 使用PUTBACK函数

719 获得文件流的当前位置

720 控制文件流指针

721 用SEEKG和SEEKP实现随机访问

722 在文件内操纵文件指针位置

723 判断I/O流的当前状态

724 字符串流

725 用ISTRSTREAM写字符串

726 对输出数组使用PCOUNT

727 用IOS成员函数操纵流数组

728 使用STRSTREAM

729 随机访问流数组

730 对流数组使用操纵符

731 为字符串数组定制插入运算符

732 I/O流中使用动态数组

733 ENDS操纵符

734 对象调用另一对象

735 重温友元

736 声明READER类为友元

737 消除CLASS类名语句

738 限制友元访问

739 名字冲突及友元

第十九章 继承及多态性

740 C++中的继承

741 基类和派生类

742 派生类

743 基类及派生类的构造函数

744 使用受保护的成员

745 公有的和私有的基类继承

746 受保护的基类继承

747 多重继承

748 构造函数的顺序和基类

749 声明私有基类

750 解决类及其基类名字的冲突

751 如何为基类构造函数传递参数

752 派生类内的访问声明

753 用虚拟基类避免混淆

754 虚拟基类

755 派生类使用保护成员

756 定义静态类数据

757 初始化静态数据成员

758 直接访问静态数据成员

759 静态私有数据成员

760 静态成员函数

761 公有静态函数的直接访问

762 嵌套类

763 在方法函数中插入汇编语句

764 类成员可递归

765 THIS指针

766 指向类的指针

767 对不同的类使用相同的指针

768 使用指针时基类和派生类名字的冲突

769 继承虚拟属性

770 虚拟函数是分层的

771 实现多态性

772 纯虚函数

773 使用虚拟函数

774 先期和迟后联编演示

775 定义输出流操纵符

776 对类使用SIZEOF

777 PRIVATE、PUBLIC、PROTECTED也能用于结构

778 友元转换函数

779 判断运算符提高还是降低可读性

第二十章 通用函数及模板

780 模板

781 使用简单模板

782 支持多种类型的模板

783 显式重载通用函数

784 通用函数的限制

785 使用通用函数

786 通用冒泡排序函数

787 用通用函数压缩数组

788 模板同样消除类复制

789 通用类

790 创建含两个通用数据类型的通用类

791 创建含有参数的操纵符

792 通用数组类

第二十一章 异常处理及类型转换

793 异常处理

794 基本的异常处理形式

795 简单的异常处理器

796 THROW语句

797 异常具有特定类型

798 TRY块内的函数抛出异常

799 函数内的局部TRY块

800 程序何时执行CATCH

801 对单个TRY块使用多个CATCH语句

802 对异常使用省略符()

803 捕获单个TRY块的所有异常

804 捕获单个TRY块的显式和通用异常

805 异常的限制

806 重新抛出异常

807 异常处理的应用

808 使用缺省的函数参数

809 用缺省函数参数避免错误

810 缺省参数和函数重载

811 创建转换函数

812 使用转换函数提高类型的可移植性

813 C++中新的强制转换运算符

814 CONST CAST运算符

815 DYNAMIC CAST运算符

816 REINTERPRET CAST运算符

817 STATIC CAST运算符

818 名字空间

819 使用名字空间

820 对名字空间用Using语句

821 运行时类型标识

822 为运行时类型标识使用TYPEID

823 TYPE INFO类

824 MUTABLE关键字

825 在类内使用MUTABLE关键字

826 布尔数据类型

第二十二章 创建可重用的类

827 定义字符串类型的特性

828 创建STRINGS类

829 编写STRINGS类的构造函数

830 STRINGS类执行I/O操作

831 编写STRINGS类的赋值函数

832 重载+运算符以连接字符串对象

833 重载关系运算符

834 判断STRINGS对象的大小

835 把STRINGS对象转换成字符数组

836 用C++的类创建双向链表

837 双向链表类成员

838 GETNEXT和GETPREVIOUS函数

839 运算符重载函数

840 继承LIST OBJECT类

841 LINKED LIST类

842 LINKED LIST的STORE函数

843 LINK LIST的REMOVE函数

844 GETSTART和GETEND函数

845 以前向的顺序显示LINKED LIST

846 以反向顺序显示LINKED LIST

847 查找链表

848 实现LINKED LIST的简单程序

849 创建通用的双向链表类

850 通用LIST OBJECT类成员

851 通用LINKED LIST类

852 通用类用作字符链表

853 通用类用于结构

854 重载一比较运算符

855 通用链表的其他实现

856 对象用于STORE函数

857 编写判断链表长度的函数

第二十三章 标准模板库

858 标准模板库介绍

859 标准模板库头文件

860 容器

861 使用容器的例子

862 标准模板库的容器介绍

863 前向和可逆容器

864 标准模板库的序列容器

865 理解USING NAMESPACE STD语句

866 标准模板库的关联容器

867 迭代器

868 迭代器演示

869 更好地理解STL的输入和输出迭代器

870 STL的其他迭代器

871 理解定则

872 理解模式

873 STL包含的算法描述

874 STL的FOR EACH算法

875 STL的GENERATE N算法

876 STL的RANDOM SHUFFLE算法

877 PARTIAL SORT COPY算法

878 MERGE算法

879 向量

880 BIT VECTOR序列容器

881 简单BVECTOR演示

882 LIST类型

883 构造LIST对象

884 往链表中插入对象

885 使用ASSIGN成员函数

886 REMOVE和EMPTY成员函数

887 遍历LIST对象

888 SLIST类型

889 往SLIST序列容器中插入元素

890 DEQUE容器

891 使用DEQUE容器

892 ERASE和CLEAR成员函数

893 对DEQUE用REVERSE迭代器

894 管理DEQUE的大小

895 MAP对象

896 用成员函数管理MAP

897 控制MAP的大小及内容

898 理解SET(集合)

899 简单的SET演示

第二十四章 Windows编程入门

900 WIN32编程介绍

901 线程介绍

902 理解消息

903 父窗口和子窗口

904 创建一般的WINDOWS程序

905 资源文件

906 WINDOWS句柄

907 定义WINDOWS的句柄类型

908 GENERIC的头文件

909 回调函数

910 WINDOWS应用程序编程接口

911 更精细地查看GENERIC.CPP程序

912 WlNMAIN函数

913 窗口的创建

914 CREATEWINDOW函数

915 SHOWWINDOW函数

916 REGISTERCLASS函数

917 学习更多有关消息的知识

918 用TRANSLATEMESSAGE处理消息

919 用DISPATCHMESSAGE处理消息

920 LPCTSTR类型

921 DWORD类型

922 WINDOWS预定义的类

923 用预定义的类创建简单的窗口

924 创建窗口时WINDOWS发送WM CREATE消息

925 窗口及控件的格式

926 用扩展的格式创建窗口

927 销毁窗口

928 REGISTERCLASSEX API函数

929 用SETPROP为窗口附加信息

930 用ENUMPROPS列出窗口的属性

931 回调函数

932 MESSAGEBOX函数

第二十五章 消息及菜单

933 重温消息

934 消息的流动

935 MSG结构的构件

936 PEEKMESSAGE函数

937 POSTMESSAGE函数

938 SENDMESSAGE函数

939 REPLYMESSAGE函数

940 钩子消息

941 SETWlNDOWSHOOKEX函数

942 EXITWlNDOWSEX函数

943 菜单的类型

944 菜单的结构

945 在资源文件中创建菜单

946 POPUP和MENUITEM描述符

947 为应用程序的窗口增加菜单

948 在应用程序中改变菜单

949 菜单产生的消息

950 LOADMENU函数

951 MODIFYMENU函数

952 用ENABLEMENUITEM控制菜单

953 用APPENDMENU扩充菜单

954 用DELETEMENU删除指定的菜单

955 在菜单项中使用加速键

956 简单的加速表

957 更好地理解资源文件的结构

958 字符串表

959 定制的资源

960 用LOADSTRING把字符串表装入程序

961 列出资源文件的内容

962 对资源文件用ENUMRESOURCETYPES

963 用FINDRESOURCE把资源装入程序

第二十六章 对话框

964 对话框

965 定义对话框类型

966 对话框使用键盘

967 对话框模板的构件

968 创建特定的对话框模板

969 对话框定义的构件

970 定义对话框的控件

971 用DIALOGBOX宏显示对话框

972 对话框的消息循环

973 深入控件的处理

974 CREATEDIALOG宏

975 CREATEDIALOGPARAM函数

976 对话框的缺省消息处理程序

977 用DLGDIRLIST函数创建对话列表框

978 响应用户在列表框中的选择

979 关闭对话框

980 用户输入

981 响应鼠标事件

982 WM MOUSEMOVE消息

983 读取鼠标按键

984 响应键盘事件

985 虚键

986 使用虚键

987 进一步使用WM KEYDOWN消息

988 设置和返回鼠标的双击时间

989 交换鼠标按键

990 判断用户是否按了一个键

991 滚动条介绍

992 SHOWSCROLLBAR函数

993 滚动条的位置及范围

994 滚动条消息

995 获取滚动条的当前设置

996 滚动窗口内容

997 WM SIZE消息

998 WM PAINT消息

999 程序必须捕获的其他滚动条消息

1000 使滚动条有效和无效

1001 使用SCROLLDC函数

第二十七章 WINDOWS的内存管理

1002 WIN32的内存模型

1003 全局及局部内存

1004 虚拟内存

1005 重温堆

1006 从全局堆中分配内存块

1007 用GLOBALREALLOC动态改变堆的大小

1008 丢弃已分配的内存块

1009 使用GLOBALFREE函数

1010 GLOBALLOCK和GLOBALHANDLE

1011 检查计算机的内存

1012 在进程中创建堆

1013 用堆函数管理进程指定的内存

1014 检查从堆中分配的内存大小

1015 分配虚拟内存块

1016 更好地理解虚拟内存块

1017 释放虚拟内存

1018 管理虚拟内存页

第二十八章 进程及线程

1019 更好地理解进程

1020 创建进程

1021 结束进程

1022 产生子进程

1023 运行独立的子进程

1024 更好地理解线程

1025 创建简单线程的函数

1026 确定线程堆栈的大小

1027 获得当前线程或进程的句柄

1028 处理线程的执行时间

1029 管理多个线程的处理时间

1030 处理无句柄的异常

1031 结束线程

1032 确定线程或进程的ID

1033 理解WINDOWS的优先级类

1034 改变进程的优先级类

1035 设置线程的相对优先级

1036 获取线程的当前优先级

1037 获取线程的上下文

1038 线程的暂停及继续

1039 定义五个主要的同步对象

1040 创建临界区

1041 使用简单的临界区

1042 用WAITFORSINGLEOBJECT同步两个线程

1043 用WAITFORMULTIPLEOBJECTS同步多个线程

1044 创建互斥体

1045 使用信号量

1046 简单的事件处理程序

第二十九章 图形设备接口

1047 理解图形设备接口

1048 更好地理解设备描述表

1049 获取窗口的设备描述表

1050 为打印机创建设备描述表

1051 用CREATECOMPATIBLEDC创建内存设备描述表

1052 使用CREATEFONT函数

1053 使用ENUMFONTFAMILIES函数

1054 用CREATEFONTINDIRECT显示多个字体

1055 获取设备的能力

1056 用GETSYSTEMMETRICS函数分析窗口

1057 获取整个窗口的设备描述符

1058 释放设备描述表

第三十章 位图、图元文件及图标

1059 由设备描述表获得窗口的句柄

1060 创建位图

1061 显示位图

1062 创建DIB位图

1063 用某种模式填充矩形

1064 使用SETDIBITS

1065 用SETDIBITSTODEVICE在指定的设备上输出位图

1066 创建并显示图元文件

1067 枚举增强型图元文件

1068 使用GETWINMETAFILEBITS函数

1069 创建图标

1070 从资源中创建图标

1071 使用CREATEICONINDIRECT函数

1072 使用LOADICON函数

1073 用LOADIMAGE装入多种图形类型

第三十一章 WINDOWS的输入及输出

1074 管道、资源、设备及文件的介绍

1075 用CREATEFILE函数打开文件

1076 用WRITEFILE写文件

1077 用READFILE读文件

1078 关闭文件

1079 把文件映射成虚拟内存

1080 把文件的视图映射到当前的进程中

1081 打开有名的文件映射对象

1082 获取并改变文件的属性

1083 获取文件的大小

1084 获取文件的时间标志

1085 创建目录

1086 获取并设置当前的目录

1087 获取WINDOWS及系统的目录.

1088 删除目录

1089 拷贝文件

1090 移动及重命名文件

1091 删除文件

1092 获取临时路径

1093 创建临时文件

1094 CREATENAMEDPIPE函数

1095 连接命名管道

1096 调用命名管道

1097 断开与命名管道的连接

1098 使用异步输入及输出

1099 OVERLAPPED结构

1100 使用设备内核对象的异步I/O

1101 GETLASTERROR函数

1102 用FORMATMESSAGE格式化错误消息

1103 使用事件内核对象的异步I/0

1104 WAITFORMULTIPLEOBJECTS用于异步I/O

1105 I/O结束端口介绍

1106 警报I/O用于异步处理

1107 警报I/O仅用于WINDOWS NT

1108 READFILEEX及WRITEFILEEX

第三十二章 .NET环境

1109 .NET环境

1110 .NET环境的其他优势

1111 公共语言运行时间

1112 元数据

1113 中间语言

1114 .NET通用类型

1115 集合

1116 引用和变量类型

1117 反射

1118 交互管理数据

1119 .NET类架构

1120 创建和编译第一个C#程序

1121 使用Console.WriteLine函数

1122 在Console.WriteLine中使用转义序列

1123 使用Console.WriteLine显示数值

1124 使用占位符格式化输出

1125 在输出格式中指定精度

1126 使用###和000格式化输出

1127 C#的Main函数

1128 访问命令行变量

1129 C撑关键字

1130 必须给变量赋值

1131 使用未赋值变量作为参数

1132 C#不支持#define和#include命令

1133 定义只读变量

1134 在C#中创建枚举

1135 类型转换

1136 转换函数

1137 在C#中进行判断

1138 在C#中判断变量的值

1139 C#程序中的循环语句

1140 使用foreach遍历数组元素

1141 使用Console.ReadLine读取键盘输入

1142 使用Console.Read函数每次读取一个字符

1143 使用内部和外部参数

1144 处理可变的参数数量

1145 在C#中使用数组

1146 改变数组的长度

1147 在C#中使用字符串

1148 使用格式说明符来格式化字符串数据

1149 插入和删除子字符串

1150 判断字符串的开始与结束

1151 分割定界字符串

1152 在函数内改变字符串和数组

1153 创建自己的名字空间

1154 名字空间的嵌套

1155 C#不需要在参数列表中使用void

1156 在C#中重载函数

1157 C#的结构与类不同

1158 定义C#类

1159 使用new创建类实例

1160 使用C#公共访问说明符

1161 使用C#的private访问说明符

1162 强调变量的取值范围

1163 使用public和internal控制类的访问

1164 使用internal访问控制说明符

1165 使用构造器函数初始化成员

1166 使用this关键字

1167 C#支持静态类成员

1168 创建私有构造器

1169 使用static构造器方法

1170 重载类构造器函数

1171 使用解构器函数清除对象

1172 Finalize方法

1173 判断在堆中分配的空间

1174 强制垃圾收集器进行收集

1175 垃圾收集代

1176 调用基类构造器函数

1177 与C++不同,C#不支持多重继承

1178 构造器和解构器的执行

1179 使用密封类防止继承

1180 使用虚拟函数

1181 在C#中使用抽象类

1182 C#不支持友类

1183 使用反射查询类

1184 利用反射接收类域

1185 C#的重载运算符

1186 包装C#变量

1187 解包C#变量

1188 使用Stack类

1189 创建名字空间别名

1190 C#预处理

1191 预处理器区域

1192 使用is运算符

1193 类转换和as运算符

1194 C#不支持缺省参数值

1195 fixed关键字

1196 授权

1197 合成授权

1198 处理多点授权的返回值

1199 类属性

1200 继承属性

1201 使用多重属性

1202 创建只读属性

1203 C#索引

1204 System.Exception对象

1205 派生定制异常

1206 使用System.Exception类StackTmce方法

1207 C#接口

1208 实现接口

1209 实现多接口

1210 重新实现接口

1211 使用反射和接口

1212 .NET环境定义的关键接口

1213 判断类是否实现接口

1214 C#事件

1215 定义事件和事件授权

1216 事件处理

1217 创建多线程c#程序

1218 创建简单的多线程例子

1219 让线程休眠

1220 挂起、重启、终止线程执行

1221 线程竞争环境

1222 使用C#的lock语句保护资源

1223 使用Monitor类同步化线程

1224 使用Monitor.TryEnter防止线程中断

1225 控制线程优先权

1226 C#属性

1227 创建属性

1228 查询类属性信息

1229 使用多个属性

1230 使用基于XML的注释

1231 使用XML标签扩展程序的注释

1232 创建简单的Windows程序

1233 定制通用控件

1234 使用通用控件

1235 使用通用对话框

1236 回顾C#反射