C/C++/C#程序员实用大全 C/C++/C#最佳编程指南PDF电子书下载
- 电子书积分:28 积分如何计算积分?
- 作 者:(美)Kris Jamsa著;张春晖等译
- 出 版 社:中国水利水电出版社
- 出版年份:2002
- ISBN:7508411897
- 页数:1144 页
第一章 C语言入门 1
1 编程简介 1
3 编译C程序 2
2 创建ASCII码源文件 2
4 语法错误 3
6 往程序里添加语句 4
5 典型的C程序结构 4
8 C语言区分大小写字母 5
7 在新的一行上显示输出结果 5
10 程序开发过程 6
9 逻辑错误(BUG) 6
12 进一步了解连接器 7
11 文件类型 7
14 帮助编译器查找头文件 8
13 头文件 8
16 注释程序 9
15 加速编译 9
18 注意编译器警告信息 10
17 提高程序的可阅读性 10
21 名字的重要性 11
20 用注释屏蔽语句 11
19 控制编译器警告 11
23 变量 12
22 分号的作用 12
27 定义变量时加上注释 13
26 定义同一类型的多个变量 13
24 给变量赋值 13
25 变量类型 13
31 C关键字 14
30 使用有意义的变量名 14
28 给变量赋初值 14
29 在定义时初始他多个变量 14
33 字符型变量 15
32 整型变量 15
35 双精度型变量 16
34 浮点型变量 16
38 无符号类型标识符 17
37 类型标识符 17
36 给浮点型变量赋值 17
39 LONG(长)类型标识符 18
42 寄存器类型标识符 19
41 使用大数值 19
40 联合使用无符号和长类型标识符 19
45 有符号类型标识符 20
44 从类型申明中去掉INT 20
43 短(SHORT)类型标识符 20
48 创建用户自己的类型 21
47 把变量的值赋给另一种类型的变量 21
46 多赋值运算符 21
50 溢出 22
49 赋给十六进制或八进制值 22
51 精确度 23
53 PRINTF入门 24
52 赋值为引号或其他字符 24
55 打印八进制或十六进制整数 25
54 使用PRINTF显示整型数值 25
57 用PRINTF显示长整型数值 26
56 用PRINTF显示无符号整型数值 26
60 用指数格式显示浮点数 27
59 用PRINTF显示字符型数值 27
58 用PRINTF显示浮点型数值 27
62 用PRINTF显示字符串 28
61 显示浮点数 28
65 用PRINTF格式化整数值 29
64 在数值前添加正号和负号 29
63 用PRINTF显示指针地址 29
66 0填充整数输出 30
69 格式化指数输出 31
68 用PRINTF格式化浮点数 31
67 在八进制和十六进制数前显示前缀 31
71 联合使用格式符 32
70 左对齐PRINTF的输出 32
74 使用PRINTF的转义字符 33
73 显示NEAR和FAR字符 33
72 字符串的换行 33
76 使用PRINTF的返回值 34
75 判断PRINTF已显示的字符数目 34
79 用ANSI驱动器显示屏幕颜色 35
78 用ANSI驱动器清除屏幕显示 35
77 使用ANSI设备驱动器 35
81 在C中作基本的数学运算 36
80 用ANSI驱动器定位光标 36
82 模运算(取余运算) 37
84 强制操作符运算顺序 38
83 运算符的优先级和结合性 38
85 C的自增运算符 39
86 C的自减运算符 40
88 按位与运算 41
87 按位或运算 41
89 按位异或运算 42
91 对变量的值进行运算 43
90 “取反”运算 43
93 C的长度(SIZEOF)运算符 44
92 C的条件运算符 44
94 移位运算 45
96 条件运算符 46
95 位循环运算 46
100 简单语句和复杂语句 47
99 用if判断条件 47
97 循环控制 47
98 C如何表示真(TRUE)和假(FALSE) 47
101 判断是否相等 48
103 用逻辑与判断两个条件 49
102 关系判断 49
105 逻辑非运算 50
104 用逻辑或来判断两个条件 50
107 在复合语句中定义变量 51
106 将条件结果赋值给变量 51
108 使用缩进来提高程序的可读性 52
111 永远循环下去 53
110 判断浮点数 53
109 使用扩展CTRL+BREAK检查 53
113 IF-IF-ELSE语句 54
112 赋值判断 54
114 按规定次数执行语句 55
115 FOR语句的有些部分是可选择的 56
117 控制FOR循环的增值 57
116 在FOR语句中减值 57
119 空循环 58
118 在FOR循环中使用字符型和浮点型数值 58
121 在FOR循环中使用逗号运算符 59
120 无穷循环 59
123 用WHILE循环重复执行一条或多条语句 60
122 不要在FOR循环中改变控制变量的值 60
124 WHILE循环的组成部分 61
125 使用DO重复执行一条或多条语句 62
126 C的CONTINUE语句 63
127 使用C的BREAK语句来结束循环 64
129 判断多个条件 65
128 GOTO语句分支 65
130 在SWITCH中使用BREAK 66
131 使用SWITCH语句的DEFAULT CASE 67
133 宏与常量扩展 69
132 在程序中定义常量 69
第二章 宏与常量 69
136 使用_LINE_预处理器常量 70
135 使用_FILE_预处理器常量 70
134 给常量和宏命名 70
137 改变预处理器的行计数 71
141 判断是否进行ANSIC编译 72
140 记录预处理器的日期和时间 72
138 生成无条件预处理器错误 72
139 其他预处理器常量 72
144 比较宏与函数 73
143 取消宏或常量 73
142 判断是C++还是C 73
148 使用#INCLUDE<FILENAME.H>或#INCLUDE“FILENAME.H” 74
147 创建用户自己的头文件 74
145 编译器PRAGMAS 74
146 预定义值和宏 74
150 进行IF-ELSE预处理 75
149 判断符号是否被定义 75
152 实现IF-ELSE和ELSE-IF预处理 76
151 更强大的预处理器条件判断 76
154 创建自定义宏 77
153 定义需要多行的宏和常量 77
157 创建SQUARE和CUBE宏 78
156 创建MIN和MAX宏 78
155 在宏定义中不要放置分号 78
159 如何使用括号 79
158 注意宏定义中的空格 79
160 宏是没有类型的 80
163 C是如何存储字符串的 81
162 编译器是如何表示字符串的 81
第三章 字符串 81
161 C字符串的形象化 81
165 在字符串常量内表示引号 82
164 ‘A’是如何区别于“ A”的 82
167 使用STRLEN函数 83
166 判断字符串的长度 83
168 将一个字符串的字符复制到另一个字符串中 84
170 给字符串追加N个字符 85
169 将一个串的内容追加到另一个串上 85
172 不要越过字符串的界限 86
171 把一个字符串转移到另一个字符串 86
174 比较字符串时忽略大小写 87
173 判断两个字符串是否相同 87
175 将字符串转换成大写或小写 88
177 返回索引到串的首次出现 89
176 获取字符串中第一次出现的某个字符 89
179 返回指向字符串末次出现的索引 90
178 搜索字符在字符串中的末次出现 90
182 计算字符串中字符出现的次数 91
181 为FAR字符串编写字符串函数 91
180 使用FAR字符串 91
184 将某特定字符赋给整个字符串 92
183 将字符串的内容反转 92
186 比较两个字符串的前N个字符 93
185 比较两个字符串 93
187 不考虑大小写比较字符串 94
189 复制字符串的内容 95
188 将字符串转换成数字 95
190 从给定字符序列中查找字符的首次出现 96
192 计算子字符串出现的次数 97
191 在字符串中查找子字符串 97
195 不使用%S格式标识符显示字符串 98
194 获取于字符串的最右端出现 98
193 给子字符串获取索引 98
197 用另一个子字符串代替子字符串 99
196 从字符串中删除子字符串 99
199 判断字符是否为字母数字 100
198 转换数值的ASCII码形式 100
203 判断字符是否为数字 101
202 判断字符是否为控制符 101
200 字符是否为字母 101
201 判断字符是否包含ASCII值 101
208 判断字符是否包含空白(whitespace)符 102
207 判断字符是否为标点符号 102
204 判断字符是否为图形字符 102
205 判断字符是大写还是小写 102
206 判断字符是否可打印 102
210 将字符转换成大写形式 103
209 判断字符是否为十六进制值 103
213 将输出格式写进字符串变量 104
212 使用ASCII字符 104
211 将字符转换成小写形式 104
215 标志字符串以节省空间 105
214 从字符串中读输入 105
216 初始化字符串 106
217 函数 107
第四章 函数 107
219 把MAIN当作函数 108
218 在函数中使用变量 108
221 使用多参数 109
220 参数简介 109
223 函数返回值 110
222 老式C程序中的参数申明 110
224 RETURN语句 111
225 函数原型 112
227 形参和实参 113
226 运行时程序库 113
230 局部变量 114
229 返回类型为非INT型的函数 114
228 解决名称冲突 114
232 函数的开销 115
231 函数如何使用堆栈 115
234 申明全局变量 116
233 C如何存储局部变量 116
236 解决全局和局部变量的名称冲突 117
235 避免使用全局变量 117
238 传值调用 118
237 更好地定义全局变量的有效范围 118
239 使用传值调用防止参数值变化 119
241 获取地址 120
240 传址调用 120
242 使用变量的地址 121
244 只改变指定参数 122
243 改变参数的值 122
246 记住函数变量的值 123
245 使用堆栈进行传址调用 123
247 C是如何初始化静态变量的 124
249 PASCAL关键字的影响 125
248 使用PASCAL调用顺序 125
252 递归函数 126
251 CDECL关键字 126
250 混合编程示例 126
253 递归阶乘函数 127
255 进一步理解递归 128
254 另一个递归的例子 128
257 判断是否要使用递归 129
256 直接递归与间接递归 129
258 为什么递归函数慢 130
261 传递指定的数组元素 131
260 将字符串传递给函数 131
259 如何消除递归 131
263 使用CONST不会阻止参数值的修改 132
262 形式参数中的CONST 132
265 指针的使用与字符串的申明 133
264 无界字符串的申明 133
268 应用外部变量 134
267 外部变量 134
266 C是如何使用堆栈处理字符串参数的 134
269 外部静态变量 135
271 调用结构和基指针 136
270 VOLATILE关键字 136
272 调用汇编语言函数 137
273 从汇编语言函数中返回值 138
277 范围 139
276 AUTO关键字 139
274 没有返回值的函数 139
275 不使用参数的函数 139
280 标识符的可见性 140
279 名称空间和标识符 140
278 范围的分类 140
283 支持个数可变的参数 141
282 支持参数个数可变的函数 141
281 DURATION 141
284 VA_START、VA_ARG和VA_END是如何工作的 142
285 创建支持多参数多类型的函数 143
287 显示字符输出 145
286 从键盘读入字符 145
第五章 键盘操作 145
290 联合使用GETCHAR和PUTCHAR 146
289 将键盘输入赋给字符串 146
288 缓冲输入 146
292 使用直接I/O读入字符 147
291 记住,GETCHAR和PUTCHAR都是宏 147
294 知道何时使用‘\R’和‘\N’ 148
293 不显示字符的直接键盘输入 148
296 将按键放回键盘缓存 149
295 直接输出 149
297 使用CPRINTF快速格式化输出 150
299 写字符串 151
298 快速格式化键盘输入 151
301 从键盘读入字符串 152
300 使用直接I/O实现更快的字符串输出 152
303 以彩色显示输出 153
302 以更快的速度从键盘输入字符串 153
306 删除屏幕上的当前行 154
305 删除当前行到行尾的内容 154
304 清除屏幕显示 154
309 在屏幕上插入空行 155
308 判断行与列的位置 155
307 定位光标进行屏幕输出 155
310 将屏幕上的文本拷贝到缓冲区 156
312 判断文本模式设置 157
311 将缓冲区中的文本拷贝到屏幕的指定位置 157
313 控制屏幕颜色 158
314 指定背景色 159
316 使用TEXTBACKGROUND设置背景色 160
315 使用TEXTCOLOR设置前景色 160
318 决定当前文本模式 161
317 控制文本的明暗度 161
320 定义文本窗口 162
319 在屏幕上移动文本 162
322 使用ARCCOSINE(反余弦) 164
321 使用整型表达式的绝对值 164
第六章 数学 164
325 求复数的绝对值 165
324 使用ARCTANGENT(反正切) 165
323 使用ARCSINE(反正弦) 165
327 使用角的余弦 166
326 对浮点值进位舍入 166
330 使用角的双曲正弦 167
329 使用角的正弦 167
328 使用角的双曲余弦 167
332 使用角的双曲正切 168
331 使用角的正切 168
334 使用指数 169
333 整数相除 169
337 使用浮点值的尾数和指数 170
336 使用浮点余数 170
335 使用浮点型表达式的绝对值 170
338 计算X*2E的结果 171
340 计算log10x的值 172
339 计算自然对数 172
343 计算xn的结果 173
342 把浮点值分解成整数和小数部分 173
341 判断最大值与最小值 173
345 生成随机数 174
344 计算10x的结果 174
347 给随机数生成器赋初值 175
346 将随机值映射到指定范围 175
349 创建定制的数学错误处理程序 176
348 计算数值的平方根 176
352 判断可用的盘空间 178
351 选择当前驱动器 178
第七章 文件、目录和磁盘 178
350 判断当前盘驱动器 178
354 读入文件分配表(FAT)信息 179
353 当心DBLSPACE 179
355 磁盘ID 180
357 进行BIOS磁盘I/O 181
356 绝对扇区读写操作 181
359 应用FOPEN打开文件 183
358 测试软驱是否准备好 183
360 FILE结构 184
362 每次读/写文件信息的一个字符 185
361 关闭一个打开的文件 185
364 判断当前文件位置 186
363 文件指针的位置指针 186
367 CONFIG.SYS文件的FILES=条目 187
366 文件翻译 187
365 文件流 187
370 进程文件表(PROCESS FILE TABLE) 188
369 文件句柄(FILE HANDLES) 188
368 使用低级和高级文件I/O 188
371 进程文件表入口 189
372 系统文件表 190
373 显示系统文件表 191
374 从流指针中导出文件句柄 192
376 重命名文件 193
375 进行格式化文件输出 193
377 删除文件 194
378 判断程序如何访问文件 195
380 深入掌握文件属性 196
379 设置文件的访问模式 196
381 检测文件流错误 198
383 刷新I/O流 199
382 判断文件的长度 199
385 获取文件流的文件句柄 200
384 一次关闭所有被打开的文件 200
387 使用TMP或TEMP创建临时文件名 201
386 使用P_TMPDIR创建临时文件名 201
390 为文件搜索命令路径 202
389 删除临时文件 202
388 创建真正的临时文件 202
391 为文件搜索环境入口的子目录 203
393 最小化文件I/O操作 204
392 打开TEMP目录中的文件 204
395 改变当前目录 205
394 在目录名中使用反斜杠 205
398 删除目录树 206
397 删除目录 206
396 创建目录 206
399 建立完全路径名 208
400 分解目录路径 209
402 使用低级函数打开和关闭文件 210
401 建立路径名 210
403 创建文件 211
405 判断文件是否结束 212
404 进行低级读写操作 212
407 为文件句柄翻译指定模式 213
406 应用低级文件例行程序 213
409 打开多于20个的文件 214
408 利用LSEEK定位文件指针 214
411 获取文件的日期和时间标记 215
410 使用DOS文件服务 215
412 利用位域获取文件的日期与时间 217
413 设置文件的日期与时间标记 218
415 每次读写一个字 219
414 把文件日期和时间设置成当前日期和时间 219
416 改变文件的长度 220
417 控制文件打开操作的读写模式 221
418 将缓冲区赋给文件 222
419 分配文件缓冲区 223
421 读写结构 224
420 利用MKTEMP创建唯一文件名 224
422 从文件流中读取结构数据 225
423 复制文件句柄 226
424 强制文件句柄设置 227
427 打开文件进行共享访问 228
426 文件共享 228
425 把文件句柄和文件流联系起来 228
428 锁定文件内容 229
429 获取更精细的文件锁定控制 231
431 打开目录 232
430 使用DOS目录 232
435 递归读取磁盘文件 233
434 反绕目录 233
432 读取目录入口 233
433 利用目录服务读C:\WINDOWS 233
436 判断当前文件位置 234
437 打开共享文件流 235
439 创建新文件 236
438 在指定目录中创建唯一文件 236
440 利用DOS服务访问文件 237
443 按行写文本 239
442 按行读文本 239
441 强制二进制或文本文件打开 239
446 为什么TEXTCOPY不能拷贝二进制文件 240
445 强制二进制文件翻译 240
444 应用FGETS和FPUTS 240
449 读取格式化的文件数据 241
448 舍弃字符 241
447 判断文件结尾 241
450 根据当前位置定位文件指针 242
452 重新打开文件流 243
451 获取文件句柄信息 243
455 形象表示数组 245
454 申明数组 245
第八章 数组、指针和结构 245
453 数组 245
456 数组的内存需求 246
458 访问数组元素 247
457 初始化数组 247
460 使用常量定义数组 248
459 通过循环访问数组元素 248
462 把数组看作函数 249
461 把一个数组传送给函数 249
465 判断数组能存放多少个元素 250
464 在堆栈中传送数组 250
463 区分字符串数组 250
467 权衡数组与动态存储的利弊 251
466 为大数组使用HUGE内存模式 251
469 行与列 252
468 多维数组 252
471 给二维数组元素赋初值 253
470 访问二维数组中的元素 253
473 通过循环显示二维数组 254
472 判断多维数组占用的内存 254
475 初始化多维数组 255
474 遍历三维数组 255
476 把二维数组传送给函数 256
478 C是如何存放多维数组的 257
477 把多维数组当作一维数组 257
480 以数组为成员的结构数组 258
479 按行存放与按列存放 258
481 联合 259
482 使用联合节省内存 260
484 应用REGS联合 261
483 使用REGS——一种典型的联合 261
485 位字段结构 262
487 位字段结构的取值范围 263
486 形象表示位字段结构 263
489 对分查找 264
488 在数组中查找指定的值 264
492 冒泡排序法 265
491 对数组进行排序 265
490 应用对分查找法 265
493 应用冒泡排序法 266
495 应用选择排序法 267
494 选择排序法 267
496 SHELL(希尔)排序法 268
498 快速排序法 269
497 应用SHELL排序法 269
499 应用快速排序法 270
501 对字符串数组排序 271
500 上述排序方法的遗留问题 271
502 利用LFIND搜索字符串 272
504 利用BSEARCH搜索已排序数组 273
503 利用LSEARCH搜索数值 273
505 利用QSORT对数组排序 274
506 判断数组元素的个数 275
509 C是如何把数组当成指针的 276
508 判断变量的地址 276
507 把指针理解为地址 276
511 申明指针变量 277
510 对数组应用取地址运算符(&) 277
513 使用指针值 278
512 间接访问指针 278
516 指针的增值与减值 279
515 指针运算 279
514 指针与函数参数的使用 279
518 利用指针遍历数组 280
517 联合应用指针引用与增值 280
521 指针数组 281
520 创建返回值为指针的函数 281
519 使用返回值为指针的函数 281
523 遍历字符串数组 282
522 形象表示字符串数组 282
525 使用指向一个指向字符串的指针的指针 283
524 把字符串数组当成指针 283
529 使用指向函数的指针 284
528 创建指向函数的指针 284
526 利用指针申明字符串常量 284
527 VOID类型指针 284
530 使用三级指针 285
533 结构标记是结构的名称 286
532 结构是变量申明的模板 286
531 结构 286
535 结构成员 287
534 用不同的方式申明结构 287
537 应用结构 288
536 形象表示结构 288
539 在函数内部改变结构 289
538 把结构传递给函数 289
541 使用POINTER→MEMBER格式 290
540 (*POINT).MEMBER间接引用 290
543 结构定义的范围 291
542 使用无标记结构 291
546 使用嵌套结构 292
545 进行结构I/O 292
544 初始化结构 292
548 创建结构数组 293
547 包含数组的结构 293
550 BIOS服务 295
549 DOS系统服务 295
第九章 DOS和BIOS服务 295
551 寄存器 296
552 标志寄存器 297
554 利用BIOS访问指针 298
553 软件中断 298
556 可能的DOS副作用 300
555 CONTROL+BREAK信息 300
558 控制声音 301
557 暂时挂起程序 301
559 获取国家专用的信息 302
561 访问和控制磁盘传输区 303
560 磁盘传输地址 303
562 BIOS键盘服务 304
563 获取BIOS设备列表 306
564 控制串行口I/O 307
566 获取扩展DOS错误信息 309
565 利用BDOS访问DOS服务 309
567 判断BIOS常规内存数量 310
569 把远端地址分解为段地址和偏移地址 311
568 创建远指针(FAR PRINTER) 311
571 读段寄存器设置 312
570 判断自由核心内存 312
574 常规内存的分布 314
573 常规内存 314
第十章 内存管理 314
572 内存的类型 314
576 为什么PC和DOS限制于1MB 315
575 访问常规内存 315
578 扩充内存 316
577 从段和偏移量中产生地址 316
579 使用扩充内存 317
581 实模式和保护模式 318
580 扩展内存 318
583 高端内存区 319
582 访问扩展内存 319
585 各种堆栈配置 320
584 堆栈 320
588 给内存区域赋值 321
587 使用_STKLEN控制堆栈空间 321
586 判断程序的当前堆栈大小 321
590 拷贝内存区域直到某指定字节 322
589 拷贝内存区域 322
592 交换两个相邻字符串字节 323
591 比较两个无符号字符数组 323
593 分配动态内存 324
595 不再需要时释放内存 325
594 再谈类型转换 325
597 堆 326
596 利用CALLOC函数分配内存 326
598 解决64Kb堆限制 327
599 从堆栈中分配内存 328
600 分配巨型数据 329
602 BRK函数 330
601 改变被分配内存区域的大小 330
604 快速堆检测 331
603 检测堆 331
605 填充自由堆空间 332
606 检测特定的堆入口 333
608 访问指定内存单元 334
607 遍历堆入口 334
609 向内存中置数 335
611 访问端口值 336
610 PC端口 336
612 CMOS 337
614 微型内存模式 338
613 内存模式 338
616 中型内存模式 339
615 小型内存模式 339
618 大型内存模式 340
617 压缩内存模式 340
619 巨型内存模式 341
620 判断当前的内存模式 342
622 将日期和时间从秒的形式转换成ASCII码 343
621 获取当前日期与时间 343
第十一章 日期和时间 343
625 判断程序的耗时 344
624 延迟若干毫秒 344
623 DAYLIGHT SAVINGS ADJUSTMENT 344
627 获取数据串 345
626 比较两个时间 345
629 读BIOS计时器 346
628 获取时间串 346
630 使用当地时间 347
632 获取DOS系统时间 348
631 使用格林威治平时 348
633 获取系统日期 349
635 设置DOS系统日期 350
634 设置DOS系统时间 350
637 利用TIMEZONE计算时差 351
636 把DOS日期转换为UNIX格式 351
640 利用TZ环境入口 352
639 利用TZSET设置时区区域 352
638 判断当前时区 352
642 获取时区信息 353
641 从用户程序中设置TZ环境入口 353
644 把日期转换成自1/1/1970以来的秒数 354
643 以秒钟的形式设置自1/1/1970午夜以来的系统时间 354
646 创建格式化日期和时间串 355
645 判断日期的儒略历日期 355
647 PC时钟类型 357
649 提醒用户输入密码 358
648 等候按键 358
第十二章 重定向I/O和进程命令行 358
650 自己编写密码函数 359
654 利用STDOUT和STDIN 360
653 联合使用INPUT和OUTPUT重定向 360
651 输出重定向 360
652 输入重定向 360
656 GETCHAR和PUTCHAR 361
655 管道(pipe)运算符 361
658 确保信息出现在屏幕上 362
657 对重定向输入进行编号 362
659 自定义MORE命令 363
662 创建定时的MORE命令 364
661 显示重定向字符的个数 364
660 显示重定向行的数目 364
663 防止I/O重定向 365
665 把重定向输出分割到一个文件中 366
664 应用STDPRN文件句柄 366
667 在重定向输入内寻找子串的出现 367
666 应用STDAUX文件句柄 367
668 显示重定向输入的头N行 368
670 显示命令行变元的个数 369
669 命令行变元 369
672 使用引号内的命令行变元 370
671 显示命令行 370
674 把ARGV当作指针 371
673 从命令行中显示文件内容 371
676 环境 372
675 C是如何知道命令行的 372
679 使用命令行数字 373
678 对MAIN的参数使用VOID 373
677 把ENV当作一个指针 373
680 出口状态值 374
682 判断是否把MAIN申明为VOID 375
681 为出口状态过程使用RETURN 375
684 DOS是如何对待环境的 376
683 在环境中搜索特定入口 376
686 给当前环境添加入口 377
685 应用ENVIRON全局变量 377
687 给DOS环境添加元素 378
689 定义在程序结束时执行的函数 379
688 退出当前程序 379
691 重复使用目标代码 381
690 库 381
第十三章 编程工具 381
694 常用的库操作 382
693 创建库文件 382
692 编译C和OBJ文件时出现的问题 382
698 连接器 383
697 库管理程序的其他功能 383
695 列出库文件中的子例行程序 383
696 利用库减少编译时间 383
701 使用连接器响应文件 384
700 使用连接映像 384
699 连接器的功能 384
703 生成一个简单的MAKE文件 385
702 使用MAKE命令简化应用程序的创建 385
706 MAKE和命令行 386
705 说明用户的MAKE文件 386
704 通过MAKE使用多依赖性文件 386
708 显现的和隐含的MAKE法则 387
707 在MAKE文件中放置多个依赖性 387
710 预定义MAKE宏 388
709 使用MAKE宏 388
712 验证一个MAKE宏 389
711 用MAKE执行条件进程 389
716 关闭命令显示 390
715 因错误结束MAKE文件 390
713 再次包含一个MAKE文件 390
714 使用MAKE的宏修饰符 390
720 为多个依赖文件执行一个MAKE命令 391
719 同时激活和改变一个宏 391
717 使用文件BUILTINS.MAK 391
718 在MAKE中执行出口状态进程 391
722 理解CTYPE.H,ISTYPE宏 393
721 判断是否有数学协处理器 393
第十四章 高级C语言编程 393
724 检查系统和路径错误 394
723 控制直接的视像 394
726 决定操作系统版本号 395
725 显示预定义的错误信息 395
728 执行一个非本地的GOTO 396
727 理解可移植性 396
730 激活一个内部的DOS命令 397
729 获得进程ID(PID) 397
731 使用-PSP全局变量 398
734 放置一个枚举类型来使用 399
733 使用枚举类型 399
732 在变量申明中使用CONST修饰符 399
737 保存和恢复寄存器 400
736 分配一个特殊的值给枚举类型 400
735 理解一个枚举值 400
740 建立一个链接的列表 401
739 申明一个链接的列表结构 401
738 动态列表简介 401
742 理解链表转移 402
741 一个简单的链表例子 402
744 增加一个列表入口 403
743 创建一个更有用的列表 403
746 显示一个存储的目录 404
745 插入一个列表入口 404
747 从一个列表中删除一个元素 405
748 使用一个双向链表 406
750 理解NODE->PREVIOUS->NEXT 407
749 创建一个简单的双向链表 407
751 从一个双向链表中移走一个元素 408
752 在一个双向链表中插入一个元素 409
754 派生一个子进程 410
753 理解子进程 410
755 使用其他的SPAWNLXX函数 411
756 使用SPAWNVXX函数 412
757 执行一个子进程 413
758 使用其他的EXECLXX函数 414
760 理解覆盖 415
759 使用EXECVXX函数 415
762 PC机的中断 416
761 理解中断 416
764 判断一个中断向量 417
763 使用中断关键字 417
767 生成简单的中断处理器 418
766 使能与禁止中断 418
765 设置一个中断向量 418
768 链接一个二次中断 419
770 捕获PC机时钟 420
769 生成一个中断 420
771 理解致命错误 421
773 一个更完全的致命错误处理器 422
772 C语言中的致命错误处理 422
775 生成一个Ctrl+Break处理器 424
774 恢复改变过的中断 424
778 直接插入内部函数 425
777 使用指令集选择改善性能 425
776 在用户的致命错误处理器中使用DOS服务 425
780 理解快速函数调用 426
779 使能和禁止内在函数 426
784 理解代码紧缩 427
783 理解冗余载入禁止 427
781 _FASTCALL参数传递的法则 427
782 理解不变代码 427
786 理解循环引入和强度削减 428
785 理解循环紧缩 428
790 基本类型与派生类型 429
789 理解C语言的4个基本类型 429
787 消除普通的子表达式 429
788 标准C语言转换 429
792 理解连接 430
791 理解初始化值 430
795 理解左值(LVALUE) 431
794 申明和定义 431
793 理解临时申明 431
798 谨慎使用远指针 432
797 使用段寄存器关键字 432
796 理解右值(RVALUE) 432
800 数学协处理器语句 433
799 理解正常化的指针 433
802 防止循环包含 434
801 理解变量中的CDECL和PASCAL 434
806 理解COUT I/O流 435
805 从简单的C++程序开始 435
第十五章 C++入门 435
803 C++介绍 435
804 C++源文件的差异 435
808 用COUT连接不同的数据类型 436
807 使用COUT输出值和变量 436
812 输出到CERR 437
811 如果钟情PRINTF,使用PRINTF 437
809 显示十六进制和八进制数值 437
810 重定向COUT 437
815 理解CIN如何选择数据域 438
814 CIN不要使用指针 438
813 用CIN得到输入 438
820 理解IOSTREAM.H头文件包含的内容 439
819 使用FLUSH操纵符快速输出 439
816 理解输入输出流如何获得变量类型 439
817 使用CLOG实现输出 439
818 CIN、COUT、CERR和CLOG是类的实例 439
823 C++支持匿名联合 440
822 C++增加的新关键字 440
821 C++需要函数原型 440
826 控制COUT的输出宽度 441
825 提供缺省参数值 441
824 分辨全局范围 441
828 指定COUT的填充字符 442
827 使用SETW设置COUT宽度 442
829 左对齐和右对齐COUT的输出 443
831 以小数或科学记数格式显示数值 444
830 控制COUT显示浮点数字的数目 444
833 设置输入输出基数 445
832 恢复COUT至默认值 445
836 使用按位运算符及COUT 446
835 在函数原型中放置默认参数值 446
834 在需要的地方定义变量 446
840 理解自由空间 447
839 在C++中使用ENUM关键字 447
837 理解迟缓(或短路)计算 447
838 在C++中使用CONST关键字 447
843 无自由空间的测试 448
842 为多个数组分配内存 448
841 用NEW分配内存 448
846 释放内存至自由空间 449
845 使用FAR指针和NEW运算符 449
844 关于堆空间 449
848 给函数传递引用 450
847 理解C++中的引用 450
851 使用引用的规则 451
850 用三种方法传递参数 451
849 防止隐藏对象 451
853 使用INLINE关键字 452
852 函数可返回引用 452
854 使用C++的ASM关键字 453
858 简单的TEE命令 454
857 简单过滤器程序 454
855 用CIN读字符 454
856 用COUT写字符 454
861 文件结束测试 455
860 更好的FIRST命令 455
859 简单的FIRST命令 455
863 理解连接规范 456
862 用ENDL产生新行 456
866 重载函数的第二个例子 457
865 重载函数 457
864 理解重载 457
867 避免不明确的重载 458
870 改变NEW运算符的缺省处理器 459
869 在循环中使用CIN.GETLINE 459
868 使用CIN每次读一行 459
872 判断C++编译 460
871 用SET_NEW_HANDLER函数设置NEW处理器 460
874 结构中定义函数成员 461
873 理解C++中的结构 461
877 给成员函数传递参数 462
876 在结构外定义成员函数 462
875 在结构内定义成员函数 462
879 不同结构具有同名函数成员 463
878 同一结构的多个变量 463
880 同名成员不同函数 464
883 理解为什么使用对象 465
882 理解面向对象编程 465
第十六章 对象 465
881 理解对象 465
884 把程序分解成对象 466
886 理解C++的类 467
885 理解对象和类 467
889 理解继承 468
888 理解多态性 468
887 理解封装 468
891 创建简单类模型 469
890 类和结构的选择 469
892 实现简单类的程序 470
895 在申明中使用或省略类名 471
894 理解作用域分辨符 471
893 定义类构件 471
898 理解PRIVATE:标志 472
897 理解信息隐藏 472
896 理解PUBLIC:标志 472
900 使用公有和私有数据 473
899 理解PROTECTED:标志 473
902 公有方法常称为接口函数 474
901 决定什么隐藏什么公开 474
903 在类外定义类函数 475
906 对象实例共享代码 476
905 理解对象实例 476
904 在类的内部和外部定义方法 476
907 存取类成员 477
910 另一种类初始化方法 478
909 类初始化 478
908 全局分辨符 478
912 静态数据成员 479
911 理解静态类成员 479
913 静态成员函数 480
915 内联函数申明 481
914 成员函数申明 481
917 类和联合 482
916 决定内联和非内联函数的使用 482
919 友元函数 483
918 匿名联合 483
920 友元类 484
922 使用含参数的构造函数 485
921 构造函数 485
第十七章 常见的类函数 485
923 使用构造函数 486
925 使用含参数的构造函数 487
924 程序何时执行构造函数 487
927 用构造函数分配内存 488
926 在构造函数中解决名字冲突 488
928 方便简洁地处理内存分配 489
930 重载构造函数 490
929 构造函数的缺省参数 490
931 获得重载函数的地址 491
933 析构函数 492
932 使用含单个参数的构造函数 492
935 为何使用析构函数 493
934 使用析构函数 493
936 程序何时调用析构函数 494
937 使用复制构造函数 495
938 显式构造函数 496
941 局部类 497
940 嵌套类 497
939 类作用域 497
943 创建类变量数组 498
942 成员名和参数名冲突的解决 498
946 创建运算符成员函数 499
945 运算符重载 499
944 构造函数和类数组 499
947 重载加运算符 500
948 重载减运算符 501
949 重载前置和后置增量运算符 502
950 重载前置和后置减量运算符 503
952 用友元函数重载运算符 504
951 重温运算符重载限制 504
954 用友元函数重载++或--运算符 505
953 友元函数重载运算符的限制 505
955 用友元函数重载运算符的原因 506
957 重载DELETE运算符 508
956 重载NEW运算符 508
958 为数组重载NEW或DELETE 509
959 重载数组下标运算符[] 511
960 重载函数调用运算符() 513
962 重载逗号运算符 514
961 重载指针运算符-> 514
963 抽象 515
964 为类指针分配内存 516
965 释放类指针 517
966 取消输入前的空格 518
969 类成员函数使用INLINE关键字 519
968 在头文件中定义类 519
967 类库 519
971 类数组的释放 520
970 类数组初始化 520
972 创建初始化的类数组 522
973 用多参数的构造函数初始化数组 523
974 创建初始化和未初始化数组 524
975 使用类数组 525
977 内联类代码允许改变 526
976 数组如何使用内存 526
978 静态存储区 527
982 C++的输入流 528
981 C++的输出流 528
第十八章 用C++输入输出 528
979 I/O流操作和STDIO同步 528
980 C++的I/O流 528
984 设置格式标志 529
983 用IOS成员格式化输入和输出 529
987 检测当前格式标志 530
986 重载SETF函数 530
985 清除格式标志 530
989 使用PRECISION函数 532
988 设置所有标志 532
992 用操纵算子格式化I/O 533
991 理解操纵算子 533
990 使用FILL函数 533
994 创建自己的插入函数 534
993 比较操纵算子和成员函数 534
995 重载抽取运算符 535
998 抽取函数演示 536
997 创建自己的抽取函数 536
996 重载COUT的插入运算符的另一种方法 536
1000 创建无参数的操纵算子 537
999 创建自己的操纵算子函数 537
1003 打开文件流 538
1002 老式流类库 538
1001 使用有参数的操纵算子 538
1005 读和写文件流数据 539
1004 关闭文件流 539
1007 把文件流操作放到一起 540
1006 检查文件操作的状态 540
1009 流缓冲类 541
1008 执行二进制拷贝操作 541
1011 用READ读二进制数据 542
1010 简单的流缓冲例子 542
1012 用WRITE写二进制数据 543
1013 使用GCOUNT成员函数 544
1015 使用GETLINE方法 545
1014 使用重载的GET函数 545
1016 文件结束的检测 546
1017 使用IGNORE函数 547
1020 获得文件流的当前位置 548
1019 使用PUTBACK函数 548
1018 使用PEEK函数 548
1022 用SEEKG和SEEKP实现随机访问 549
1021 控制文件流指针 549
1024 判断I/O流的当前状态 550
1023 在文件内操纵文件指针位置 550
1026 字符串流 551
1025 数组I/O类 551
1028 更好理解OSTRSTREAM 552
1027 用ISTRSTREAM写字符串 552
1030 对输出数组使用PCOUNT 553
1029 使用重载ISTRSTREAM形式 553
1032 使用STRSTREAM 554
1031 用IOS成员函数操纵流数组 554
1033 随机访问流数组 555
1035 为字符串数组定制插入运算符 556
1034 对流数组使用操纵符 556
1036 为流数组定制抽取运算符 558
1037 I/O流中使用动态数组 559
1039 ENDS操纵符 560
1038 流数组格式化 560
1041 为编译器表明类 561
1040 对象调用另一对象 561
1043 申明READER类为友元 562
1042 重温友元 562
1045 消除CLASS类名语句 563
1044 另一个友元类演示程序 563
1047 名字冲突及友元 564
1046 限制友元访问 564
1048 C++中的继承 566
第十九章 继承及多态性 566
1051 基类及派生类的构造函数 567
1050 派生类 567
1049 基类和派生类 567
1052 使用受保护的成员 568
1054 公有的和私有的基类继承 569
1053 何时使用受保护成员 569
1055 受保护的基类继承 570
1057 简单的多重继承 571
1056 多重继承 571
1058 构造函数的顺序和基类 572
1059 申明私有基类 573
1060 析构函数和多重继承 574
1061 基类和派生类间的名字冲突 575
1063 继承类何时执行构造函数 576
1062 解决类及其基类名字的冲突 576
1064 派生类构造函数演示 577
1065 如何为基类构造函数传递参数 578
1066 派生类内的访问申明 579
1068 用虚拟基类避免混淆 580
1067 使用派生类的访问申明 580
1070 互为友元 582
1069 虚拟基类 582
1071 派生类如何成为基类 583
1072 派生类使用保护成员 584
1073 定义静态类数据 585
1075 直接访问静态数据成员 587
1074 初始化静态数据成员 587
1077 静态成员函数 588
1076 静态私有数据成员 588
1079 类成员使用增强类型数据 589
1078 公有静态函数的直接访问 589
1080 嵌套类 590
1082 在方法函数中插入汇编语句 591
1081 子类和超类 591
1084 THIS指针 592
1083 类成员可递归 592
1085 THIS指针与其他指针的不同 593
1088 对不同的类使用相同的指针 594
1087 指向类的指针 594
1086 先期和迟后联编 594
1090 虚拟函数 595
1089 使用指针时基类和派生类名字的冲突 595
1091 继承虚拟属性 596
1092 虚拟函数是分层的 597
1093 实现多态性 598
1094 纯虚函数 599
1096 使用虚拟函数 600
1095 抽象类 600
1099 先期和迟后联编演示 601
1098 先期联编和迟后联编间的判定 601
1097 深入先期和迟后联编 601
1100 定义输出流操纵符 602
1102 对类使用SIZEOF 603
1101 查看IOSTREAM.H的时机己成熟 603
1104 类转换 604
1103 PRIVATE、PUBLIC、PROTECTED也能用于结构 604
1105 在构造函数中转换数据 605
1106 一个类赋给另一个类 606
1108 判断运算符提高还是降低可读性 607
1107 友元转换函数 607
1110 使用简单模板 609
1109 模板 609
第二十章 通用函数及模板 609
1112 支持多种类型的模板 610
1111 更好地理解通用函数 610
1114 显式重载通用函数 611
1113 多种通用类型模板的更多知识 611
1115 通用函数的限制 612
1116 使用通用函数 613
1117 通用冒泡排序函数 614
1118 用通用函数压缩数组 615
1120 模板同样消除类复制 616
1119 何处放置模板 616
1122 使用通用类 617
1121 通用类 617
1123 创建含两个通用数据类型的通用类 619
1125 通用数组类 620
1124 创建含参数的操纵符 620
1128 简单的异常处理器 623
1127 基本的异常处理形式 623
第二十一章 异常处理及类型转换 623
1126 异常处理 623
1130 异常具有特定类型 624
1129 THROW语句 624
1132 函数内的局部TRY块 625
1131 TRY块内的函数抛出异常 625
1133 程序何时执行CATCH 626
1134 对单个TRY块使用多个CATCH语句 627
1136 捕获单个TRY块的所有异常 628
1135 对异常使用省略符(…) 628
1137 捕获单个TRY块的显式和通用异常 629
1138 异常的限制 630
1139 重新抛出异常 631
1140 异常处理的应用 632
1142 用缺省函数参数避免错误 633
1141 使用缺省的函数参数 633
1144 创建转换函数 634
1143 缺省参数和函数重载 634
1145 使用转换函数提高类型的可移植性 635
1147 C++中新的强制转换运算符 636
1146 转换函数和重载函数 636
1148 CONST_CAST运算符 637
1149 DYNAMIC_CAST运算符 638
1151 STATIC_CAST运算符 639
1150 REINTERPRET_CAST运算符 639
1153 使用名字空间 640
1152 名字空间 640
1156 为运行时类型标识使用TYPEID 641
1155 运行时类型标识 641
1154 对名字空间用Using语句 641
1157 TYPE_INFO类 642
1159 在类内使用MUTABLE关键字 644
1158 MUTABLE关键字 644
1162 使用布尔数据类型 645
1161 布尔数据类型介绍 645
1160 思考MUTABLE关键字 645
1164 定义字符串类型的特性 647
1163 创建字符串类型 647
第二十二章 创建可重用的类 647
1165 创建STRINGS类 648
1167 STRINGS类执行I/O操作 649
1166 编写STRINGS类的构造函数 649
1168 编写STRINGS类的赋值函数 650
1169 重载+运算符以连接字符串对象 651
1170 从STRINGS对象中移走字符串 652
1171 重载关系运算符 653
1173 把STRINGS对象转换成字符数组 654
1172 判断STRINGS对象的大小 654
1175 演示STRINGS对象 655
1174 把STRINGS对象用作字符数组 655
1177 另一个STRINGS示例 656
1176 为STRINGS类创建头文件 656
1178 用C++的类创建双向链表 657
1179 双向链表类成员 658
1181 运算符重载函数 659
1180 GETNEXT和GETPREVIOUS函数 659
1183 LINKED_LIST类 660
1182 继承LIST_OBJECT类 660
1185 LINK_LIST的REMOVE函数 661
1184 LINKED_LIST的STORE函数 661
1187 以前向的顺序显示LINKED_LIST 662
1186 GETSIART和GETEND函数 662
1189 查找链表 663
1188 以反向顺序显示LINKED_LIST 663
1190 实现LINKED_LIST的简单程序 664
1192 通用LIST_OBJECT类成员 666
1191 创建通用的双向链表类 666
1193 通用LINKED_LIST类 667
1196 通用类用于结构 668
1195 通用类用于DOUBLE链表 668
1194 通用类用作字符链表 668
1197 重载==比较运算符 669
1199 对象用于STORE函数 670
1198 通用链表的其他实现 670
1200 编写判断链表长度的函数 671
1201 标准模板库介绍 672
第二十三章 标准模板库 672
1203 容器 673
1202 标准模板库头文件 673
1204 使用容器的例子 674
1206 前向和可逆容器 676
1205 标准模板库的容器介绍 676
1207 标准模板库的序列容器 677
1209 标准模板库的关联容器 678
1208 理解USING NAMESPACE STD语句 678
1210 迭代器 680
1211 迭代器演示 681
1212 更好地理解STL的输入和输出迭代器 682
1213 STL的其他送代器 683
1215 理解模式 684
1214 理解定则 684
1217 STL算法的另一个演示 685
1216 算法 685
1218 STL包含的算法描述 686
1219 STL的FOR_EACH算法 687
1220 STL的GENERATE_N算法 688
1221 STL的RANDOM_SHUFFLE算法 689
1222 PARTIAL_SORT_COPY算法 691
1223 MERGE算法 693
1224 INNER_PRODUCT算法 694
1225 向量 696
1226 另一个简单向量程序 698
1228 BIT_VECTOR序列容器 699
1227 向量和C数组的比较 699
1229 简单BVECTOR演示 700
1231 LIST容器的通用构件 701
1230 LIST类型 701
1232 构造LIST对象 702
1234 使用ASSIGN成员函数 703
1233 往链表中插入对象 703
1236 遍历LIST对象 704
1235 REMOVE和EMPTY成员函数 704
1238 往SLIST序列容器中插入元素 705
1237 SLIST类型 705
1240 使用DEQUE容器 706
1239 DEQUE容器 706
1241 ERASE和CLEAR成员函数 707
1242 对DEQUE使用[]数组运算符 708
1243 对DEQUE用REVERSE迭代器 709
1246 简单的MAP示例 710
1245 MAP对象 710
1244 管理DEQUE的大小 710
1247 用成员函数管理MAP 711
1249 理解SET(集合) 713
1248 控制MAP的大小及内容 713
1250 简单的SET演示 715
1252 WINDOWS程序和DOS程序之间的不同点 717
1251 WIN32编程介绍 717
第二十四章 Windows编程入门 717
1253 线程介绍 718
1254 理解消息 719
1255 窗口的构件 720
1256 父窗口和子窗口 721
1257 创建一般的WINDOWS程序 723
1258 资源文件 725
1260 定义WINDOWS的句柄类型 727
1259 WINDOWS句柄 727
1262 回调函数 728
1261 GENERIC的头文件 728
1264 更精细地查看GENERIC.CPP程序 729
1263 WINDOWS应用程序编程接口 729
1265 WINMAIN函数 730
1266 窗口的创建 731
1268 SHOWWINDOW函数 732
1267 CREATEWINDOW函数 732
1269 REGISTERCLASS函数 733
1270 学习更多有关消息的知识 735
1271 用TRANSLATEMESSAGE处理消息 736
1274 LPCTSTR类型 737
1273 简单WINDOWS程序的组成 737
1272 用DISPATCHMESSAGE处理消息 737
1275 DWORD类型 738
1276 WINDOWS预定义的类 739
1277 用预定义的类创建简单的窗口 740
1279 窗口及控件的格式 741
1278 创建窗口时WINDOWS发送WM_CREATE消息 741
1280 用扩展的格式创建窗口 744
1282 REGISTERCLASSEX API函数 746
1281 销毁窗口 746
1283 用SETPROP为窗口附加信息 747
1284 用ENUMPROPS列出窗口的属性 748
1285 回调函数 749
1286 MESSAGEBOX函数 750
1287 MESSAGEBEEP函数 751
1289 消息的流动 752
1288 重温消息 752
第二十五章 消息及菜单 752
1291 PEEKMESSAGE函数 754
1290 MSG结构的构件 754
1292 POSTMESSAGE函数 755
1293 SENDMESSAGE函数 756
1296 SETWINDOWSHOOKEX函数 757
1295 钩子消息 757
1294 REPLYMESSAGE函数 757
1297 EXITWINDOWSEX函数 759
1299 菜单的结构 760
1298 菜单的类型 760
1301 POPUP和MENUITEM描述符 761
1300 在资源文件中创建菜单 761
1303 在应用程序中改变菜单 762
1302 为应用程序的窗口增加菜单 762
1305 LOADMENU函数 763
1304 菜单产生的消息 763
1306 MODIFYMENU函数 764
1307 用ENABLEMENUITEM控制菜单 766
1308 用APPENDMENU扩充菜单 767
1309 用DELETEMENU删除指定的菜单 768
1310 在菜单项中使用加速键 769
1311 简单的加速表 770
1312 更好地理解资源文件的结构 771
1313 字符串表 772
1315 用LOADSTRING把字符串表装入程序 773
1314 定制的资源 773
1316 列出资源文件的内容 774
1317 对资源文件用ENUMRESOURCETYPES 776
1318 用FINDRESOURCE把资源装入程序 777
1320 定义对话框类型 779
1319 对话框 779
第二十六章 对话框 779
1322 对话框模板的构件 780
1321 对话框使用键盘 780
1324 对话框定义的构件 781
1323 创建特定的对话框模板 781
1326 用DIALOGBOX宏显示对话框 782
1325 定义对话框的控件 782
1327 对话框的消息循环 784
1329 CREATEDIALOG宏 785
1328 深入控件的处理 785
1330 CREATEDIALOGPARAM函数 786
1331 对话框的缺省消息处理程序 787
1332 用DLGDIRLIST函数创建对话列表框 788
1333 响应用户在列表框中的选择 790
1334 关闭对话框 791
1336 响应鼠标事件 792
1335 用户输入 792
1337 WM_MOUSEMOVE消息 793
1338 读取鼠标按键 794
1340 虚键 795
1339 响应键盘事件 795
1342 进一步使用WM_KEYDOWN消息 797
1341 使用虚键 797
1344 交换鼠标按键 799
1343 设置和返回鼠标的双击时间 799
1345 判断用户是否按了一个键 800
1347 理解不同的滚动条类型 801
1346 滚动条介绍 801
1348 SHOWSCROLLBAR函数 802
1350 滚动条消息 803
1349 滚动条的位置及范围 803
1351 获取滚动条的当前设置 804
1352 滚动窗口内容 805
1353 WM_SIZE消息 807
1354 WM_PAINT消息 808
1355 程序必须捕获的其他滚动条消息 809
1356 使滚动条有效和无效 811
1357 使用SCROLLDC函数 812
1359 全局及局部内存 813
1358 WIN32的内存模型 813
第二十七章 WINDOWS的内存管理 813
1360 虚拟内存 814
1361 重温堆 815
1362 从全局堆中分配内存块 816
1363 用GLOBALREALLOC动态改变堆的大小 817
1364 丢弃已分配的内存块 818
1366 GLOBALLOCK和GLOBALHANDLE 819
1365 使用GLOBALFREE函数 819
1367 检查计算机的内存 821
1368 在进程中创建堆 822
1369 用堆函数管理进程指定的内存 823
1370 检查从堆中分配的内存大小 824
1371 分配虚拟内存块 825
1372 理解保护页 827
1373 更好地理解虚拟内存块 828
1374 释放虚拟内存 829
1375 管理虚拟内存页 830
1376 更好地理解进程 831
第二十八章 进程及线程 831
1377 创建进程 832
1378 结束进程 837
1379 产生子进程 838
1381 运行独立的子进程 839
1380 进一步使用子进程 839
1382 更好地理解线程 840
1384 确定何时不创建线程 841
1383 估计对线程的需要 841
1385 创建简单线程的函数 842
1386 查看线程的启动 843
1388 确定线程堆栈的大小 844
1387 操作系统创建线程的步骤 844
1390 处理线程的执行时间 845
1389 获得当前线程或进程的句柄 845
1391 管理多个线程的处理时间 846
1392 更好地理解GETQUEUESTATUS函数 847
1393 处理无句柄的异常 848
1394 结束线程 849
1396 操作系统如何安排线程 850
1395 确定线程或进程的ID 850
1398 理解WINDOWS的优先级类 851
1397 优先级介绍 851
1399 改变进程的优先级类 852
1400 设置线程的相对优先级 853
1401 获取线程的当前优先级 854
1403 线程的暂停及继续 855
1402 获取线程的上下文 855
1405 定义五个主要的同步对象 856
1404 线程同步 856
1406 创建临界区 857
1408 用WAITFORSINGLEOBJECT同步两个线程 858
1407 使用简单的临界区 858
1409 用WAITFRMULTIPLEOBJECTS同步多个线程 860
1410 创建互斥体 861
1411 在简单的程序中使用互斥体 862
1412 使用信号量 863
1413 简单的事件处理程序 865
1416 更好地理解设备描述表 867
1415 使用图形设备接口的原因 867
第二十九章 图形设备接口 867
1414 理解图形设备接口 867
1419 获取窗口的设备描述表 868
1418 理解原点及范围 868
1417 使用私有设备描述表 868
1420 为打印机创建设备描述表 869
1422 理解CREATEDC的危险 873
1421 用CREATECOMPATIBLEDC创建内存设备描述表 873
1423 使用CREATEFONT函数 874
1424 使用ENUMFONTFAMILIES函数 878
1425 用CREATEFONTINDIRECT显示多个字体 879
1426 获取设备的能力 880
1427 用GETSYSTEMMETRICS函数分析窗口 884
1429 获取整个窗口的设备描述符 887
1428 理解GETSYSTEMMETRICS的使用 887
1430 释放设备描述表 888
1432 理解设备相关的位图 889
1431 由设备描述表获得窗口的句柄 889
第三十章 位图、图元文件及图标 889
1433 理解设备无关位图 890
1434 创建位图 892
1435 显示位图 893
1436 创建DIB位图 895
1437 用某种模式填充矩形 896
1438 使用SETDIBITS 897
1439 用SETDIBITSTODEVICE在指定的设备上输出位图 898
1440 理解图元文件 899
1441 创建并显示图元文件 900
1442 枚举增强型图元文件 901
1443 使用GETWINMETAFILEBITS函数 902
1444 理解图标 903
1445 创建图标 904
1446 从资源中创建图标 905
1447 使用CREATEICONINDIRECT函数 906
1448 使用LOADICON函数 907
1449 用LOADIMAGE装入多种图形类型 908
1451 管道、资源、设备及文件的介绍 911
1450 理解WINDOWS的文件I/O 911
第三十一章 WINDOWS的输入及输出 911
1452 用CREATEFIL函数打开文件 912
1453 CREATEFILE用于不同的设备 916
1455 重温文件指针 918
1454 使用文件句柄 918
1456 用WRITEFILE写文件 919
1457 用READFILE读文件 921
1459 用文件映射共享数据 923
1458 关闭文件 923
1460 把文件映射成虚拟内存 924
1461 把文件的视图映射到当前的进程中 926
1463 理解文件属性 927
1462 打开有名的文件映射对象 927
1464 获取并改变文件的属性 928
1465 获取文件的大小 929
1467 创建目录 930
1466 获取文件的时间标志 930
1468 获取并设置当前的目录 931
1469 获取WINDOWS及系统的目录 932
1471 拷贝文件 933
1470 删除目录 933
1473 删除文件 934
1472 移动及重命名文件 934
1474 用FINDFIRST找出文件 935
1475 使用FINDNEXTFILE 936
1477 用FINDFILE函数根据属性查找文件 937
1476 用FINDCLOSE关闭查找句柄 937
1478 用SEARCHPATH代替FIND查找文件 938
1480 创建临时文件 939
1479 获取临时路径 939
1481 CREATENAMEDPIPE函数 940
1482 连接命名管道 943
1483 调用命名管道 945
1484 断开与命名管道的连接 946
1486 使用异步输入及输出 947
1485 更好地理解异步处理 947
1488 使用设备内核对象的异步I/O 948
1487 OVERLAPPED结构 948
1490 设置较高的或较低的限额 949
1489 工作集大小的限额 949
1491 GETLASTERROR函数 950
1492 用FORMATMESSAGE格式化错误消息 951
1493 使用事件内核对象的异步I/O 953
1495 I/O结束端口介绍 954
1494 WAITFORMULTIPLEOBJECTS用于异步I/O 954
1496 警报I/O用于异步处理 955
1498 READFILEEX及WRITEFILEEX 956
1497 警报I/O仅用于WINDOWS NT 956
1499 使用回调的完成例程 957
1502 .NET环境的其他优势 958
1501 .NET应用程序 958
第三十二章 .NET环境 958
1500 .NET环境 958
1503 Visual Studio 959
1506 中间语言 960
1505 元数据 960
1504 公共语言运行时间 960
1508 .NET通用类型 961
1507 如何使用.NET应用程序 961
1510 元数据不是.NET的新生事物 962
1511 .NET应用程序 963
1514 反射 964
1513 引用和变量类型 964
1515 交互管理数据 965
1517 创建和编译第一个C#程序 966
1518 Console.WriteLine函数 967
1522 使用加号连接字符串 969
1521 字符串中的反斜杠符 969
1523 使用Console.WriteLine显示数值 970
1525 使用占位符格式化输出 971
1524 必须为每个占位符指定值 971
1526 在输出格式中指定精度 972
1527 使用###和000格式化输出 973
1528 C#的Main函数 974
1530 访问命令行变量 975
1529 在Main函数中使用void关键字 975
1531 定义多个Main 976
1532 C#关键字 977
1535 创建引用类型变量 978
1534 创建值类型变量 978
1533 研究C#类型 978
1537 使用未赋值变量作为参数 979
1536 必须给变量赋值 979
1539 定义只读变量 980
1538 C#不支持#define和#include命令 980
1541 通过检查变量来检测溢出错误 981
1540 在C#中创建枚举 981
1542 类型转换 982
1544 C#运算符 983
1543 转换函数 983
1545 C#运算符的优先级 984
1546 在自增和自减运算符之间避免空格 985
1547 不安全的代码 986
1548 C#认为sizeof运算符不安全 987
1550 在C#中判断变量的值 988
1549 在C#中进行判断 988
1552 使用foreach遍历数组元素 989
1551 C#程序中的
- 《近代旅游指南汇刊二编 16》王强主编 2017
- 《甘肃省档案馆指南》甘肃省档案馆编 2018
- 《近代旅游指南汇刊 31》王强主编 2014
- 《近代旅游指南汇刊二编 10》王强主编 2017
- 《手工咖啡 咖啡爱好者的完美冲煮指南》(美国)杰茜卡·伊斯托,安德烈亚斯·威尔霍夫 2019
- 《近代旅游指南汇刊 13》王强主编 2014
- 《近代旅游指南汇刊 28》王强主编 2014
- 《程序逻辑及C语言编程》卢卫中,杨丽芳主编 2019
- 《近代旅游指南汇刊 23》王强主编 2014
- 《重庆市绿色建筑评价技术指南》重庆大学,重庆市建筑节能协会绿色建筑专业委员会主编 2018
- 《中国当代乡土小说文库 本乡本土》(中国)刘玉堂 2019
- 《异质性条件下技术创新最优市场结构研究 以中国高技术产业为例》千慧雄 2019
- 《中国铁路人 第三届现实主义网络文学征文大赛一等奖》恒传录著 2019
- 《莼江曲谱 2 中国昆曲博物馆藏稀见昆剧手抄曲谱汇编之一》郭腊梅主编;孙伊婷副主编;孙文明,孙伊婷编委;中国昆曲博物馆编 2018
- 《中国制造业绿色供应链发展研究报告》中国电子信息产业发展研究院 2019
- 《中央财政支持提升专业服务产业发展能力项目水利工程专业课程建设成果 设施农业工程技术》赵英编 2018
- 《中国陈设艺术史》赵囡囡著 2019
- 《《走近科学》精选丛书 中国UFO悬案调查》郭之文 2019
- 《清至民国中国西北戏剧经典唱段汇辑 第8卷》孔令纪 2018
- 《中国少数民族唢呐教学曲选》胡美玲编 2019