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