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