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