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