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