|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C语言编程常见问题解答
/ y, `* B# }3 b8 Z/ U5 T8 ]) f$ I" p y【作者】[美]Paul S.R. Chisholm 译:张芳妮 吕 波$ V! i* [. ~8 P% i, Y; f5 x9 a
【出版社】清华大学出版社
2 D0 R* d% a5 }+ F4 O+ y8 k7 K1 {) A2 o* @
% @" B* r7 n- ?8 i
第l章 C语言
8 N# I U, X! L4 U 1. 1 什么是局部程序块(local block)? * W4 [* I4 v% G2 S7 j& q# a
1. 2 可以把变量保存在局部程序块中吗?
- C0 D6 ^! g# g4 u% I 1. 3 什么时候用一条switch语句比用多条if语句更好?6 u3 y& n; |& H! S8 l
1. 4 switch语句必须包含default分支吗?
4 [4 u, R0 T( P0 I! Q 1. 5 switch语句的最后—个分支可以不要break语句吗?
$ e: l0 y& R5 \+ X$ Z- R& p 1. 6 除了在for语句中之外,在哪些情况下还要使用逗号运算?
+ }* m! s/ J' ^' H Y) N 1. 7 怎样才能知道循环是否提前结束了?
) O# `0 t/ K/ G9 T g$ {0 S 1. 8 goto,longjmp()和setjmp()之间有什么区别?
6 k0 a6 k) Q# h 1. 9 什么是左值(lvaule)?
# R2 h0 o: W$ _0 Y* N 1. 10 数组(array)可以是左值吗? 9 O6 o, J2 _" \
1. 11 什么是右值(rvaule)? / ~, u. N: }' P' X7 p1 T1 K
1. 12 运算符的优先级总能保证是“自左至右”或“自右至左”的顺序吗?
$ p, B* I$ c& d, w- t: Z 1. 13 ++var和var++有什么区别?
1 Q7 a6 g" f+ T# c 1. 14 取模运算符(modulusoperator)“%”的作用是什么?
. O$ `* y9 x* a- w/ G, ^! N
$ C8 ]! G/ c9 C; V7 ` 第2章 变量和数据存储0 Q7 K4 ^7 r/ C( z8 S+ \
2. 1 变量存储在内存(memory)中的什么地方?
! ?" r' t$ Z2 y7 ^1 o 2. 2 变量必须初始化吗?
[$ p+ n! j" \$ Q7 V3 E" E" n% v 2. 3 什么是页抖动(pagethrashing)?
+ p8 }( }! V8 s 2. 4 什么是const指针?
8 ^2 U1 j! J! w9 p a 2. 5 什么时候应该使用register修饰符?它真的有用吗?
2 X$ v1 q( ]1 F5 U4 B 2. 6 什么时候应该使用volatile修饰符?
$ X% J6 v0 A- g 2. 7 一个变量可以同时被说明为const和volatile吗?
6 g! `2 t( h9 G& u( I 2. 8 什么时候应该使用const修饰符?
4 n" p0 W# _) b- [7 e 2. 9 浮点数比较(floating—point comparisons)的可靠性如何?& `+ } s# ~# W9 V4 k* \, u }
2. 10 怎样判断一个数字型变量可以容纳的最大值? * n) D1 M2 T8 \0 a0 M
2. 11 对不同类型的变量进行算术运算会有问题吗? : G& e ^% x4 I: f
2. 12 什么是运算符升级(operator promotion)?
9 F3 l, h m* d5 r) b 2. 13 什么时候应该使用类型强制转换(typecast)? 1 h' [) L' \5 r
2. 14 什么时候不应该使用类型强制转换(typecast)?
% z& R3 N4 x5 d8 [% M0 A 2. 15 可以在头文件中说明或定义变量吗? 3 {2 F! N: [5 D8 m
2. 16 说明一个变量和定义一个变量有什么区别? # _9 G, y4 `# {; s: I1 A
2. 17 可以在头文件中说明static变量吗? - j* G0 m, [6 t, q# y
2.18 用const说明常量有什么好处? 4 X4 }) z& n8 s1 l" G; L3 M
第3章 排序与查找
' H/ @" K6 u: { 排 序
9 a7 X! H9 ?, B* `5 i/ x 查 找
/ S- e$ P) c6 T6 J) U0 ~3 @' j 排序或查找的性能
% g" r3 I' n8 H/ Q! T 3.1 哪一种排序方法最方便?
7 t+ l d# d) Q) P( b7 b) `' \ 3.2 哪一种排序方法最快?# ~) o% f# h" `7 O2 n
3.3 当要排序的数据集因太大而无法全部装入内存时,应怎样排序?
- e r* d5 V$ \7 M 3.4 哪一种查找方法最方便?7 m/ M% D; J3 q& @ P$ P5 t
3.5 哪一种查找方法最快?0 o# p5 ~5 [0 J8 R1 t1 L
3.6 什么是哈希查找?/ l0 w6 [; C: Y. x2 t0 \
3.7 怎样对链表进行排序?
% ?, [1 ~5 s$ a! k$ S- E- ~ 3.8 怎样查找链表中的数据?$ ^/ v' K2 _4 Y2 A5 h
第4章 数据文件6 g1 d. t( `" H) U; N8 Y& Z& f: c& Y
4.1 当errno为一个非零值时,是否有错误发生?
+ R% ]1 W( i3 ^ 4.2 什么是流(stream)?
1 ~6 b3 b6 D5 O9 o5 K 4.3 怎样重定向—个标准流?
; |. u7 ?, T, g b$ B) w5 Z 4.4 怎样恢复一个重定向了的标准流?3 N3 g2 G8 r3 ^' B% s
4.5 stdout能被强制打印到非屏幕设备上吗?1 Q' T5 O7 e7 g1 B4 D* ~
4.6 文本模式(text mode)和二进制模式(binary mode)有什么区别?
3 D' ?) x& `$ t+ d5 C 4.7 怎样判断是使用流函数还是使用低级函数?5 L) W1 F& y; l/ z0 x3 e# i
4.8 怎样列出某个目录下的文件?0 l7 `& T3 ]& X0 ?9 w# W
4.9 怎样列出—个文件的日期和时间?$ |0 H3 o- a+ @5 d d) i$ P0 @
4.10 怎样对某个目录下的文件名进行排序?
8 c' E" E9 D* r1 X4 [; w, q 4.1l 怎样判断一个文件的属性?
: z. ?7 W: p& `+ L% e' H* D+ m" U& e3 }- M 4.12 怎样查看PATH环境变量?
+ E; }6 }% L8 ` 4.13 怎样打开一个同时能被其它程序修改的文件?
- P$ I# g) i* Z/ n1 M+ H 4.14 怎样确保只有你的程序能存取一个文件? ( @$ }$ f6 w0 S5 d$ @
4.15 怎样防止其它程序修改你正在修改的那部分文件内容? ; |: [; Q( `$ @( I$ ?; W, ^- A
4.16 怎样—次打开20个以上的文件?" W7 l8 }" b; N7 P; X
4.17 怎样避开"Abort,Retry,Fail"消息?# u6 Q" T r% S
4.18 怎样读写以逗号分界的文本? 8 J: Q) _0 u7 O" X$ D' u
第5章 编译预处理
" j3 p2 K1 H; S3 h 5.1 什么是宏(macro)?怎样使用宏?
" ^7 R" y! r2 { 5.2 预处理程序(preprocessor)有什么作用?
( k$ M0 K8 J, b. w/ D) j 5.3 怎样避免多次包含同—个头文件?
9 o% r X3 O( F7 W& ~ 5.4 可以用#include指令包含类型名不是“.h”的文件吗?
$ e* m" G u/ u, f# o3 F 5.5 用#define指令说明常量有什么好处?
8 ~6 U) i9 B$ W' R 5.6 用enum关键字说明常量有什么好处?
8 }/ b" k) r) M 5.7 与用#define指令说明常量相比,用enum关键字说明常量有什么好处?$ {& _2 p" g- j5 u9 t$ f
5.8 如何使部分程序在演示版中失效?: F$ u( `4 O, W2 ]9 n
5.9 什么时候应该用宏代替函数?- |8 G, N: l* L8 C# L3 J
5.10 使用宏更好,还是使用函数更好?9 {. _2 W4 {6 P( [! H9 [
5.11 在程序中加入注释的最好方法是什么?
. n F% }; X. a. U1 K$ J# j5 }1 g 5.12 #include<file>和#include“file”有什么不同? 0 E* k! v# u# Q* c0 p& e/ U
5.13 你能指定在编译时包含哪一个头文件吗? $ P# k0 r) k$ I; M1 W
5.14 包含文件可以嵌套吗? 1 c2 j: |! M% N
5.15 包含文件最多可以嵌套几层?
7 ~- o- W- Y( y1 D Q& s 5.16 连接运算符“##”有什么作用?
) k6 J, j" `. C0 w0 z* @: ~: }; \, O 5.17 怎样建立对类型敏感的宏?
: G! C7 A; ]- p; R4 y 5.18 什么是标准预定义宏?
% Q6 z5 |# W. P4 o 5.19 怎样才能使程序打印出发生错误的行号? n: ~! Q; o, d
5.20 怎样才能使程序打印出发生错误的源文件名?
, K, n" Y- h& W+ g$ \ 5.2l 怎样判断一个程序是用C编译程序环是用C++编译程序编译的?
2 f6 ] C: f8 ]3 w/ a' d0 p4 e 5.22 预处理指令#pragma有什么作用?
. g4 }% }' _9 h9 Q1 r 5.23 #line有什么作用?
4 [3 x3 U5 S6 W0 r1 q 5.24 标准预定义宏_FILE_有什么作用?
$ g% N9 S4 F( G. w3 m( F$ x 5.25 怎样在程序中打印源文件名?
& w! X2 v' ^* C' v# | 5.26 标准预定义宏_LINE_有什么作用?
, s8 ^! \! `/ e6 ~4 H# q/ H% k/ R 5.27 怎样在程序中打印源文件的当前行号? 5 i; u: W" K4 y! F7 H- x
5.28 标准预定义宏_DATE_和_TIME_有什么作用?' ?% H; y, U3 {" y
5.29 怎样在程序中打印编译日期和时间?
! ?& y P; C: Z4 [' T R 5.30 怎样判断一个程序是否遵循ANSIC标准?/ }" c8 N' Z% G+ |
5.31 怎样取消一个已定义的宏?
4 E& G% B4 I* ^! N" J 5.32 怎样检查一个符号是否已被定义?
$ ]# Y% g: j0 k- l# S 5.33 C语言提供哪些常用的宏?
3 w) p7 v3 ?% _+ S" q 第6章 字符串操作, M2 S' e, T4 s9 O' \/ j
6.l 串拷贝(strcpy)和内存拷贝(mEMCpy)有什么不同?它们适合于在哪种情况下使用?
) a+ g) w) K" b. @+ h 6.2 怎样删去字符串尾部的空格?0 r9 ?" ] f% G& T5 }
6.3 怎样删去字符串头部的空格?9 X( B- b0 _& l' j
6.4 怎样使字符串右对齐? ' p8 M: i6 K3 L$ U% T$ a9 V
6.5 怎样将字符串打印成指定长度? / {5 j9 O- a( t( I# H" P9 ~& e7 P
6.6 怎样拷贝字符串的一部分? 6 A: i4 J7 D1 }! `! ]
6.7 怎样将数字转换为字符串? % g( x6 K ^: ^
6.8 怎样将字符串转换为数字?
! g6 O- }7 ?0 n+ F( q+ { 6.9 怎样打印字符串的一部分?
. j8 n( d2 o7 d6 n 6.10 怎样判判断两个字符串是否相同?
( S3 f8 K/ I, L0 i# Q9 \ 第7章 指针和内存分配- v9 I0 J' G3 E# d9 K3 Z
7.1 什么是间接引用(indirection)?
8 n9 K' _4 M7 m! p 7.2 最多可以使用几层指针?
) K0 @6 T( e2 {4 y! J4 n 7.3 什么是空指针?
. o! }5 u9 v6 h. | 7.4 什么时候使用空指针?1 h/ j) ~9 J, O2 y
7.5 什么是void指针?9 S! E* k3 t/ `4 P, o) N; `
7.6 什么时候使用void指针?
2 n/ `9 m" @" P- Y7 a 7.7 两个指针可以相减吗?为什么? 9 g& w1 h7 l, n" q
7.8 把一个值加到一个指针上意味着什么?; \9 C6 A0 p: J2 A4 h1 c: C' V
7.9 NULL总是被定义为0吗?
. m4 H, V% u9 m3 H1 r 7.10 NULL总是等于0吗? & u" S1 \* s/ R1 s8 |2 A. \
7.11 用指针作if语句的条件表达式意味着什么?% s+ E/ N: A, L ]
7.12 两个指针可以相加吗?为什么? ?: U/ M1 c7 W) E: h6 S$ u8 e
7.13 怎样使用指向函数的指针?2 j5 H0 w7 N5 O0 n
7.14 怎样用指向函数的指针作函数的参数?
7 k9 y5 R5 z' Q. Q; k& D 7.15 数组的大小可以在程序运行时定义吗?
- X1 m( V% ~# }) T+ h 7.16 用malloc()函数更好还是用calloc()函数更好?: \9 m# t2 p: m7 d; f7 j
7.17 怎样说明一个大于64KB的数组?" \8 S- k( F2 s( ^; e5 b3 ?) ^
7.18 far和near之间有什么区别?
6 z; H- W* r: F3 i3 s. e 7.19 什么时候使用far指针?
# M; m1 Z# y0 F n9 R5 c9 U 7.20 什么是栈(stack)? 1 V! U1 g: f3 q& {: q) `
7.21 什么是堆(heap)?
( C# O/ q6 b2 g- m. ]) a- Y+ Z" [ 7.22 两次释放一个指针会导致什么结果?
6 b/ [% }' e. S k' r$ u' l 7.23 NULL和NUL有什么不同?6 z/ j$ _; R' X4 j
7.24 为什么不能给空指针赋值?什么是总线错误、内存错误和内存信息转储?
! `) p+ E6 S, x, A: D1 I! [: h" l 7.25 怎样确定一块已分配的内存的大小?
$ a( h5 O' i2 [( v 7.26 free()函数是怎样知道要释放的内存块的大小的? ! l1 t* L1 o X( ^! B+ o: _
7.27 可以对void指针进行算术运算吗?
" r: m* _% c: `5 U% }! I 7.28 怎样打印一个地址?: V+ y" q' Z( {4 ]: q& U
第8章 函数. p, n0 O7 w0 y7 Q
8.1 什么时候说明函数? ( Q* [* E- L7 I% ^/ x
8.2 为什么要说明函数原型?( w1 [6 u: y# r6 {$ O4 ]
8.3 一个函数可以有多少个参数?
; x; h( c$ T! C+ a' V 8.4 什么是内部函数? . I% u! O. O) e* c7 r! l- o2 K
8.5 如果一个函数没有返回值,是否需要加入return语句?
7 r* x* e, V. `6 D 8.6 怎样把数组作为参数传递给函数?
. C0 e* V4 A6 x; m 8.7 在程序退出main()函数之后,还有可能执行一部分代码吗? $ |* G0 Y( j, p- w- a7 \5 C
8.8 用PASCAL修饰符说明的函数与普通C函数有什么不同?
+ r2 Q9 i! e- X' ? 8.9 exit()和return有什么不同? . `4 V0 O+ O- E( W5 L3 K S
第9章 数组
; X% j! Y$ Q$ x3 j( q# c6 W5 S 9.1 数组的下标总是从0开始吗?
$ e+ Q5 X/ a9 b0 Q# d9 g* |1 u2 C# r 9.2 可以使用数组后面第—个元素的地址吗? / o( Q8 Q* x6 x9 r
9.3 为什么要小心对待位于数组后面的那些元素的地址呢?
7 U6 V: C; o7 e) G4 g 9.4 在把数组作为参数传递给函数时,可以通过sizeof运算符告诉函数数组的大小吗? P" t0 Y+ }( D% D
9.5 通过指针或带下标的数组名都可以访问数组中的元素,哪一种方式更好呢?
1 V8 K+ S& v' j3 h 9.6 可以把另外一个地址赋给一个数组名吗? . h7 |% c) @0 |" m- y ?: z' C
9.7 array_name和&array_name有什么不同?
" y- T2 F' n$ T! m 9.8 为什么用const说明的常量不能用来定义一个数组的初始大小?
8 @! D8 r, _" B9 V4 l8 t. r* n 9.9 字符串和数组有什么不同?
& m8 X s5 d# C* S 第10章 位(bit)和字节(byte)
7 O U, l9 u b, r 10.1 用什么方法存储标志(flag)效率最高?$ m. R# O% y- Q0 | f) O) E
10.2 什么是“位屏蔽(bit masking)”? 9 d5 n8 p6 t( _! U' N
10.3 位域(bit fields)是可移植的吗?$ L' e* T. T9 h7 j% K( d: m/ {
10.4 移位和乘以2这两种方式中哪一种更好?5 \1 P6 t1 \! H+ l6 U0 t" k0 B
10.5 什么是高位字节(high-order byte)和低位字节(low-order byte)? K, `# n6 g4 P, s3 P
10.6 16位和32位的数是怎样存储的?
' q5 @' E o+ ]* ?7 p$ W
4 Z# m5 c! n" D5 D# J& Y 第11章 调试
/ t- u2 Q6 b7 c9 Y, P1 x0 }( h 11.1 如果我运行的程序挂起了,应该怎么办?
+ A; P- x& X9 V0 C 11.2 如何检测内存漏洞(leak)?- e- C5 E1 ]& d( C1 U4 ^0 k
11.3 调试程序的最好方法是什么?- S1 \# B1 A' B' q+ u! \
11.4 怎样调试TSR程序? ( n4 _: R4 G! d; D
11.5 怎样获得一个能报告条件失败的程序?
2 ?/ p& m. ]) T' k5 L 第12章 标准库函数+ K1 e! v- R0 ?$ H' r
12.1 为什么应该使用标准库函数而不要自己编写函数?
( Y9 ~' H1 \1 f2 w2 m1 k5 e5 a 12.2 为了定义我要使用的标准库函数,我需要使用哪些头文件?
4 l# W x' J. S/ m( f8 N 12.3 怎样编写参数数目可变的函数?: D. A+ S3 v+ s4 D3 ?9 E* `) f
12.4 独立(free—standing)环境和宿主(hosted)环境之间有什么区别? 6 W8 d' \6 J* x& q
12.5 对字符串进行操作的标准库函数有哪些? L% N- j/ G y% {8 }
12.6 对内存进行操作的标准库函数有哪些?
2 _7 ]- ]% m1 f; Z3 J$ S0 M 12.7 怎样判断一个字符是数字、字母或其它类别的符号?
- F: Z! ^3 W; j6 ^# B 12.8 什么是“局部环境(locale)”?
: e1 u+ Q, b/ q1 f 12.9 有没有办法从一个或多个函数中跳出?
0 T& _ J0 z b/ _8 o 12.10 什么是信号(signal)?用信号能做什么?
2 B0 q; n$ L) X: R1 z0 ? 12.11 为什么变量名不能以下划线开始?6 l' x7 _( n1 ?4 W( O
12.12 为什么编译程序提供了两个版本的malloc()函数?
; ?. I- G1 g; v% v" C0 H+ ~3 [+ r 12.13 适用于整数和浮点数的数学函数分别有哪些?
, z- L9 [- y6 k' H 12.14 什么是多字节字符(multibyte characters)? ; W! L/ v( u4 {
12.15 怎样操作由多字节字符组成的字符串?6 n( p& a& |; Y6 D# n% c
第13章 时间和日期* {( }% i V U5 O8 H/ y
13.1 怎样把日期存储到单个数字中?有这方面的标准吗?
% k; L; a) r& I" w) ~ 13.2 怎样把时间存储到单个数字中?有这方面的标准吗?
- V, ?. f0 c; J% P. v- }* ` 13.3 为什么定义了这么多不同的时间标准?
2 B6 O4 X. G# r6 H 13.4 存储日期的最好方法是哪一种?
1 o3 Y- W a, K3 A# y! B 13.5 存储时间的最好方法是哪一种?
3 e& W$ |5 n- l3 z/ u 第14章 系统调用
% o5 H, [6 H% b* _7 u0 d7 R* T 14.1 怎样检查环境变量(environment variables)的值?9 y1 ]& _9 d+ e7 v' u
14.2 怎样在程序中调用DOS函数?6 R1 \; ~$ D! k" J
14.3 怎样在程序中调用BIOS函数?: N) f; T+ w# A% ]* R# [
14.4 怎样在程序中存取重要的DOS内存位置?4 w5 n# P7 B; r I/ m
14.5 什么是BIOS?5 p, C* Z3 V d$ O0 X4 Q! U1 M
14.6 什么是中断?
4 e3 }$ c' l- n$ C) C- {. d4 A- c7 K 14.7 使用ANSI函数和使用BIOS函数,哪种方式更好? # i$ f) L% G3 ]1 P( G# Y1 V H
14.8 可以通过BIOS把显示模式改为VGA图形模式吗?
, V- M* Z+ H2 I* a, }6 d, ] 14.9 运算符的优先级总能起作用吗(从左至右,从右至左)?
3 o; G) }' }4 S: o7 V 14.10 函数参数的类型必须在函数头部或紧跟在其后说明吗?为什么?1 @+ P# H; j* M- X. H, [# O
14.11 程序应该总是包含main()的一个原型吗?/ ]7 H9 ]1 [& u( J+ o
14.12 main()应该总是返回一个值吗?
" s* w1 b/ ?* A* f i 14.13 可以通过BIOS控制鼠标吗?
# ~/ h6 `# l7 ~( X8 @ 第15章 可移植性
; k) |- b/ V# b7 _* ?% \ 15.1 编译程序中的C++扩充功能可以用在C程序中吗?
, y% k" v0 Y( B$ D 15.2 C++和C有什么区别?
+ v! U( U$ V7 m! i0 V1 W5 K6 f* M( V 15.3 在C程序中可以用“∥”作注释符吗?
, [' w) `/ h" | 15.4 char,short,int和long类型分别有多长?
6 |8 }" U4 x' g6 H0 i# w" [5 C9 C 15.5 高位优先(big-endian)与低位优先(little—endian)的计算机有什么区别?
5 g4 O4 ^2 J) X+ v! ~5 n$ i
7 {6 R4 ?8 F' `. G6 G, C4 ] 第16章 ANSI/ISO标准
* Z- `0 q+ ]5 r2 P 16.1 运算符的优先级总能起作用吗?% i) {9 u( q4 k# T; i3 _
16.2 函数参数类型必须在函数参数表中或紧跟其后的部分中说明吗?- x9 K+ Y$ h0 N) f4 K \
16.3 程序中必须包含main()的原型吗? ' b3 Q" s# z _' l+ ^$ [
16.4 main()应该总是返回一个值吗?
7 J/ b& e1 Z2 k/ a; r" I' p 第17章 用户界面——屏幕和键盘2 V( _* b" \% p# N
17.1 为什么直到程序结束时才看到屏幕输出?, h# E4 I9 ^' }7 J2 {# f+ D
17.2 怎样在屏幕上定位光标?
y( g& y3 W- f 17.3 向屏幕上写数据的最简单的方法是什么?
0 x& G& L0 l$ n8 }2 M 17.4 向屏幕上写文本的最快的方法是什么?
% K2 F# \, \# y8 B 17.5 怎样防止用户用Ctr+Break键中止程序的运行? 5 Y4 M3 n4 W) v: c% P+ f
17.6 怎样才能只得到一种特定类型的数据,例如字符型数据?! W" a% D# C9 m" Y
17.7 为什么有时不应该用scanf()来接收数据?
: H% A5 Y g5 y8 l% F0 W/ V/ q- e 17.8 怎样在程序中使用功能键和箭头键?% {( q2 G/ a/ R
17.9 怎样防止用户向一个内存区域中输入过多的字符?
2 J5 b* l0 g! H @) |: Q 17.10 怎样用0补齐一个数字?/ O5 e8 [7 b. {
17.11 怎样才能打印出美元一美分值?, v9 @ A9 ^+ A# v. B7 U5 s# f
17.12 怎样按科学记数法打印数字?
5 n: R* V$ L( F# K$ K7 r/ x 17.13 什么是ANSI驱动程序?
! a2 V7 V: J" {! b3 W: l6 @! G 17.14 怎样通过ANSI驱动程序来清屏? ) n' K/ C1 ? y3 L& a/ T: h
17.15 怎样通过ANSI驱动程序来存储光标位置? # }) r+ M' d7 ~( U0 Q+ w
17.16 怎样通过ANSI驱动程序来恢复光标位置? $ b: C0 c8 M; Z/ `: [6 w! D5 W
17.17 怎样通过ANSI驱动程序来改变屏幕颜色? 9 \0 a4 m1 I' M% q7 P7 k9 D7 [* I4 x
17.18 怎样通过ANSI驱动程序来写带有颜色的文本? 8 x7 V3 Y8 F3 \0 @
17.19 怎样通过ANSI驱动程序来移动光标?
* i6 C$ \- T3 g4 Z( Z 第18章 程序的编写和编译' V: r5 i% ?) }5 D
18.1 程序是应该写成一个源文件还是多个源文件?+ d( `* ^: |9 [' B8 z" [, f; Q/ K
18.2 各种存储模式之间有什么区别?6 ~( P$ Z2 }" E0 }7 d5 w
18.3 最常使用的存储模式有哪些?& i6 j e' e9 @& o3 V- k! U
18.4 应该使用哪种存储模式?- T/ @/ E( J c
18.5 怎样生成一个".COM"文件?. ^- x4 Z _ K/ c c% f `$ h
18.6 ".COM"文件有哪些地方优于".EXE"文件? # V) n. Y" r$ r- \( D; D
18.7 当一个库被连接到目标上时,库中的所有函数是否都会被加到一个".EXE"文件中?
" f r* ~4 a- x3 D 18.8 可以把多个库函数包含在同一个源文件中吗?. y4 g+ x# h, `+ R9 r
18.9 为什么要建立一个库?% f+ q, o3 {+ H" p
18.10 如果一个程序包含多个源文件,怎样使它们都能正常工作?
( x) J5 F3 a% p+ `2 n 18.11 连接过程中出现"DGROUP:group exceeds 64K"消息是怎么回事? / S. S& E G. n
18.12 怎样防止程序用尽内存?
* \6 K6 L4 N" ~- d( h; S 18.13 如果程序太大而不能在DOS下运行,怎样才能使它在DOS下运行呢?
/ M; u6 S7 w8 e { 18.14 怎样才能使DOS程序获得超过640KB的可用内存呢? ) L a; z# \5 H1 Y+ T- |, u6 Z+ t3 Q
18.15 近程型(near)和远程型(far)的区别是什么?
5 F+ E9 l" l7 j 第19章编程风格和标准 R6 J! |7 F) T
19.1 可以在变量名中使用下划线吗?+ W5 Q1 x7 _: r: a' l8 y# [/ }* j( J
19.2 可以用变量名来指示变量的数据类型吗?) }$ k( b0 ]0 t" G0 L4 ^% j
19.3 使用注释会影响程序的速度、大小或效率吗?
% _1 K4 P0 o5 E2 L P0 e' I 19.4 使用空白符会影响程序的速度、大小或效率吗?9 R7 X v' O4 f
19.5 什么是骆驼式命名法?) Z& O( m$ `! s- d2 t/ S/ t
19.6 较长的变量名会影响程序的速度、大小或效率吗?2 l$ L) ]* Z" D: o5 \
19.7 给函数命名的正确方法是什么?. L% L' Z4 h! N
19.8 使用大括号的正确方法是什么?
. _* W/ d. Q( E% c0 z; W 19.9 一个变量名应该使用多少个字母?ANSI。标准允许有多少个有效字符?
# E W% w5 ^/ L8 { D: ^6 ^ 19.10 什么是匈牙利式命名法?应该使用它吗?/ K. x! F* u# j
19.11 什么是重复处理(iterative processing)?
1 }" V8 C7 [+ l- h+ W" ?+ S# ~. m 19.12 什么是递归(recursion)?怎样使用递归?
# _& n* Q& e/ {1 y 19.13 在C语言中,表示真和假的最好方法是什么? `5 d2 e( P+ E1 Q# E+ J! ^, D t5 K. \
19.14 空循环(null loops)和无穷循环(infinite loops)有什么区别? # m- s7 a$ ~( h* N8 m7 p
19.15 continue和break有什么区别? 0 W; J/ l8 i7 d
第20章 杂项(Miscellaneous)+ v2 S! w: l, b8 K$ y, Z M1 z. c
: e6 f' O. u [
20.1 怎样获得命令行参数?% ?0 ^2 a6 M! t7 l* g1 s, ]- \. R6 N
20.2 程序总是可以使用命令行参数吗?1 D7 [# w# D" F5 w
20.3“异常处理(exception handling)”和“结构化异常处理(structured exception handling)”有什么区别?
0 ?* X8 w1 k! d& O2 G0 l; } 20.4 怎样在DOS程序中建立一个延时器(delay timer)?
, _; ^6 R, o$ J8 ? 20.5 Kernighan和Ritchie是谁?
. k; z; @1 T w, Q 20.6 怎样产生随机数?* v0 Y: C0 q7 @' H, w6 G
20.7 什么时候应该使用32位编译程序?
3 I$ c+ g( r7 W0 X1 W 20.8 怎样中断一个Windows程序?
k! U* m) |% L, X3 w' _: K2 F 20.9 为什么要使用静态变量?6 ^' Z9 [, |8 f7 [ u0 r
20.10 怎样在一个程序后面运行另一个程序?, _5 i( Y3 e5 V; d7 |
20.11 怎样在一个程序执行期间运行另一个程序?
! v/ `. Z$ m% Q9 u, h3 l/ G* k+ F- t 20.12 怎样把数据从一个程序传给另一个程序?
* ^$ Z7 {# f3 X7 R' o* F 20.13 怎样判断正在运行的程序所在的目录?$ h. t/ \& H! e" m) B) A9 L/ w
20.14 怎样找到程序中的重要文件(数据库,配置文件,等等)?+ o- h. ^) ]+ Q0 C& X7 e
20.15 本书的有些例子程序有许多缺陷,为什么不把它们写得更好?3 W! E' m1 @# Q5 f
20.16 怎样使用Ctr+Break失效?
, F4 r) x' b F0 f& h 20.17 可以使热启动(Ctrl+Alt+Delete)失效吗? $ T& F! d2 C" z4 \0 O( O; M3 _, O$ e
20.18 怎样判断一个字符是否是一个字母?: z) c p" \9 v% l6 g
20.19 怎样判断一个字符是否是一个数字?2 x9 ~1 [; Z! A4 }5 Z
20.20 怎样把一个十六进制的值赋给一个变量?
2 h6 Q. _3 @3 z# X9 s$ ? 20. 21 怎样把一个八进制的值赋给一个变量?
5 h* }' Q0 J% o! R+ _4 L. ` 20.22 什么是二进制?7 M! R, O3 p) y4 O$ W4 v% u' r
20.23 什么是八进制?7 ?$ I, J' f9 s) H
20.24 什么是十六进制?) V ]# n0 [6 G) r3 @+ O9 N$ ]3 O
20.25 什么是换码符(escape characters)?
- ^+ I) ]( c' e- U5 ^9 E9 b
9 T( B3 h' v" _ 第21章 Windows a( B0 r$ ~1 i0 I( d- n8 B9 M, X
* `5 r3 K$ _, Y9 A 21.1 可以在Windows程序中使用printf()吗?# e6 |7 D9 L7 u) r9 i
21.2 怎样在Windows程序中建立一个延时器?
% H/ P, F' V, I I 21.3 什么是句柄?
" \, `: v* z* Y/ a. `. G$ h! n 21.4 怎样终止一个Windows程序? * _: k. R& b% S6 L
21.5 什么是GDI?通过什么途径使用它? & R! L; C5 V) r
21.6 为什么windows.h很重要?- t! L7 p0 V* y8 w
21.7 什么是Windows SDK?
9 Q+ P. h& N" {- `0 { 21.8 在编写Windows程序时, Microsoft的Windows SDK是必需的吗?
( m: e. M* _2 Y: Y, i 21.9 Windows函数和标准DOS函数有什么区别?
- a. O# m: W! J& P; S: i 21.10 什么是动态链接?5 c% q7 x1 ]) q4 c+ k
21.11 HANDLE, HWND和HDC之间有什么区别?
: ?% S6 P5 k: {5 V/ L6 d 21.12 Windows程序对于不同的编译程序是兼容的吗?
. u* Y6 R1 J/ ^/ d6 T2 V 21.13 Windows总是保存和刷新程序的窗口吗?
; Y" d+ G4 H% y 21.14 怎样确定一个Windows程序的用户区的大小?1 d1 g, d) I0 l
21.15 什么是OEM键码?: ^3 O, U4 W0 O
21.16 Windows程序需要考虑OEM键码吗?
+ o* g# l5 c d' s9 u5 d 21.17 什么是虚拟键码? ) F+ `8 p6 r5 p- `( w( T8 i# w% v
21.18 什么是死键?/ y$ B' C t( G, n2 }4 ?7 p
21.19 插入标记(caret)和光标(cursor)有什么区别?! H d$ n, g+ o) V* _0 I7 t
21.20 在程序用户区外点击鼠标能被捕获吗?
) |6 v4 |4 N; Q# M1 n4 [& T4 E 21. 21 怎样创建一个活动的位图?
; Z; A# s: a. A; N; V$ n 21.22 怎样在Windows程序中获得日期或时间?2 c/ C* v( e: c: X- M
21.23 怎样在Windows程序中更新标题条(title bar)? u1 R e5 p; D! B
21.24 怎样在Windows程序中获得系统颜色?
8 w& L$ Q% g( |" b1 { 21.25 什么是系统颜色常量?
# Q# f9 n6 y: |/ L0 _8 r% y 21.26 怎样创建自己的按钮和控件(control)?
# l$ T' r2 k$ |# f- R8 M 21.27 什么是静态子窗口(static child windows)?& j2 n5 u3 w( T# H H
21.28 怎样创建窗口子类(window sbclassing)?; V* T& {8 F) \$ \0 z
21.29 什么是编辑类(edit class)?
* P3 D+ }) V' L; L, B 21.30 什么是列表框类(listbox class)?
, _$ K" A, p* B! B' S 21.31 怎样在Windows程序中分配内存?$ p$ i" E7 `8 D8 R; X* i( ]- ~
21.32 怎样在Windows程序中分配内存?
* r+ J6 X8 A* a# }; N; {" O5 u0 x 21.33 模式(modal)对话框和非模式(modeless)对话框有什么区别? z2 B" G$ L5 y
. X$ F3 Y3 z% O3 ?; s" N 附 录 常用函数的包含文件 |
|