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