第一部分 C++基础:C子集
第1章 C概述 2
1.1 C语言的起源 2
1.2 一种中级语言 2
1.3 一种结构化语言 3
1.4 一种程序员的语言 4
1.5 解释器与编译器 5
1.6 C程序的结构 6
1.6.1 库与链接 7
1.6.2 单独编译 7
1.6.3 C程序的内存映像 8
1.7 术语回顾 8
第2章 变量. 常量. 运算符和表达式 10
2.1 标识符名 10
2.2 数据类型 10
2.2.1 类型限定符 11
2.2.2 访问限定符 12
2.3 变量的声明 12
2.3.1 局部变量 13
2.3.2 形式参数 14
2.3.3 全局变量 15
2.4 存储类说明符 16
2.4.1 extern 16
2.4.2 static变量 18
2.4.3 static局部变量 18
2.4.4 static全局变量 19
2.4.5 register变量 20
2.5 赋值语句 21
2.5.1 多重赋值 21
2.5.2 赋值中的类型转换 21
2.5.3 变量的初始化 22
2.6 常量 23
2.7 运算符 24
2.7.1 算术运算符 24
2.7.2 增量和减量运算符 25
2.7.3 关系运算符与逻辑运算符 26
2.7.4 位运算符 27
2.7.5 ?运算符 30
2.7.6 &与*指针运算符 30
2.7.7 编译时运算符sizeof 32
2.7.8 逗号运算符 32
2.7.9 点号(.)与箭头( ->)运算符 33
2.7.10 [ ] 与 ( ) 运算符 33
2.7.11 优先级说明 33
2.8 表达式 34
2.8.1 表达式中的类型转换 34
2.8.2 强制类型转换 35
2.8.3 空白符和圆括号 36
2.8.4 C语言的简写 36
第3章 程序控制语句 37
3.1 True与False 37
3.2 选择语句 37
3.3 if语句 37
3.3.1 嵌套if 39
3.3.2 if-else-if阶梯 39
3.3.3 ?选择符 40
3.4 switch 42
3.5 循环语句 45
3.6 for循环 45
3.6.1 for循环变量 46
3.6.2 无限循环 48
3.6.3 循环体为空的for语句 48
3.7 while循环 49
3.8 do-while循环 50
3.9 跳转语句 51
3.10 break 51
3.11 exit( ) 53
3.12 continue 54
3.13 标号与goto语句 55
3.14 表达式语句 55
3.15 块语句 56
第4章 函数 57
4.1 函数的一般形式 57
4.2 return语句 57
4.2.1 从函数中返回 57
4.2.2 返回值 58
4.2.3 main()函数返回什么 59
4.3 理解函数的作用域 60
4.4 函数参数 60
4.4.1 值调用与引用调用 60
4.4.2 建立引用调用 61
4.4.3 使用数组调用函数 62
4.5 argc与argv—main( )函数的参数 66
4.6 函数原型 70
4.7 旧式与新式的参数声明 72
4.8 “隐含整型”规则 73
4.9 声明可变长度参数列表 74
4.10 返回指针 74
4.11 递归 75
4.12 函数指针 76
4.13 实现的问题 78
4.13.1 参数与通用函数 79
4.13.2 效率 79
第5章 数组 80
5.1 一维数组 80
5.2 生成数组指针 81
5.3 向函数传递一维数组 81
5.4 二维数组 84
5.5 多维数组 88
5.6 索引指针 88
5.7 数组的分配 90
5.8 数组初始化 91
5.9 一个例子:Tic-Tac-Toe 94
第6章 指针 97
6.1 指针就是地址 97
6.2 指针变量 97
6.3 指针运算符 98
6.4 指针表达式 99
6.4.1 指针赋值 99
6.4.2 指针算术运算 100
6.4.3 指针比较 101
6.5 动态内存分配与指针 102
6.6 理解const指针 103
6.7 指针与数组 104
6.7.1 字符数组指针 105
6.7.2 指针数组 107
6.8 指针的指针:多重间接访问 108
6.9 初始化指针 109
6.10 函数指针 110
6.11 指针带来的问题 112
第7章 结构. 联合与用户自定义类型 114
7.1 结构 114
7.1.1 访问结构成员 116
7.1.2 结构赋值 116
7.2 结构数组 117
7.3 传递结构给函数 122
7.3.1 传递结构成员给函数 123
7.3.2 传递整个结构给函数 123
7.4 结构指针 124
7.4.1 声明结构指针 124
7.4.2 使用结构指针 124
7.5 结构内的数组与结构 127
7.6 位域 128
7.7 联合 129
7.8 枚举 131
7.9 C与C++之间的一个重要区别 133
7.10 使用sizeof以保证可移植性 133
7.11 typedef 134
第8章 输入. 输出. 流与文件 136
8.1 C与C++ I/O 136
8.2 流与文件 136
8.2.1 流 137
8.2.2 文件 137
8.3 控制台I/O 138
8.3.1 读写字符 138
8.3.2 读写字符串:gets( )与puts( ) 140
8.4 格式化控制台I/O 141
8.4.1 printf( ) 141
8.4.2 scanf( ) 147
8.5 C文件系统 152
8.5.1 文件指针 153
8.5.2 打开一个文件 153
8.5.3 写入一个字符 154
8.5.4 读出一个字符 155
8.5.5 关闭一个文件 155
8.5.6 使用fopen( ). getc( ). putc( )和fclose( ) 155
8.5.7 使用feof( ) 157
8.5.8 对字符串操作:fgets( )与fputs( ) 158
8.5.9 fread( )与fwrite( ) 158
8.5.10 fseek( )与随机访问I/O 160
8.5.11 fprintf( )与fscanf( ) 163
8.5.12 清除文件 163
8.5.13 ferror( )与rewind( ) 163
8.6 与控制台的连接 164
第9章 预处理器与注释 166
9.1 #define 166
9.2 #error 169
9.3 #include 169
9.4 条件编译指示符 170
9.4.1 #if. #else. #elif与#endif 170
9.4.2 #ifdef与#ifndef 172
9.5 #undef 173
9.6 使用defined 173
9.7 #line 174
9.8 #pragma 174
9.9 # 177
9.10 #import 177
9.11 # 与## 预处理运算符 177
9.12 预定义宏名 178
9.13 注释 180
第二部分 C++Builder函数库
第10章 链接. 库和头文件 181
10.1 链接器 181
10.2 库文件和目标文件 182
10.3 标准库和C++ Builder 的扩展 182
10.4 头文件 183
第11章 I/O函数 185
11.1 int access (const char *filename,
int mode) 185
11.2 int chmod (const char *filename,
int mode) 186
11.3 int chsize (int handle, long size) 186
11.4 void clearerr FILE *stream 187
11.5 int close (int fd)
int rtl close (int fd) 188
11.6 int_creat (const char *filename, int pmode)
int_rtl_creat (const char *filename, int attrib)
int creat new (const char *filename, int attrib)
int creattemp (char *filename, int attrib) 189
11.7 int dup (int handle)
int dup2 (int old_handle,
int new_handle) 190
11.8 int eof (int fd) 191
11.9 int fclose (FILE *stream)
int _fcloseall (void) 192
11.10 FILE *fdopen (int handle,
char *mode) 192
11.11 int feof (FILE *stream) 193
11.12 int ferror (FILE *stream) 193
11.13 int fflush (FILE *stream) 194
11.14 int fgetc (FILE *stream) 194
11.15 int fgetchar (void) 195
11.16 int *fgetpos (FILE *stream,
fpos_t *pos) 195
11.17 char *fgets (char *str, int num,
FILE *stream) 196
11.18 long filelength (int handle) 197
11.19 int fileno (FILE *stream) 197
11.20 int_flushall(void) 198
11.21 FILE *fopen (const char *fname,
const char *mode) 198
11.22 int fprintf (FILE *stream,const char
*format, arg-list) 200
11.23 int fputc (int ch, FILE *stream) 200
11.24 int fputchar (int ch) 201
11.25 int fputs (const char *str,
FILE *stream) 201
11.26 size_t fread (void *buf, size_t size,
size_t count, FILE *stream) 202
11.27 FILE *freopen (const char *fname, const
char *mode, FILE *stream) 202
11.28 int fscanf (FILE *stream, const
char *format, arg-list) 203
11.29 int fseek (FILE *stream, long offset,
int origin) 204
11.30 int fsetpos (FILE *stream, const
fpos_t *pos) 205
11.31 FILE *_fsopen (const char *fname,
const char *mode, int shflg) 206
11.32 int fstat (int handle, struct stat
*statbuf) 206
11.33 long ftell (FILE *stream) 207
11.34 size_t fwrite (const void *buf, size_t
size, size_t count, FILE *stream) 207
11.35 int getc (FILE *stream) 208
11.36 int getch (void)
int getche (void) 209
11.37 int getchar (void) 209
11.38 char *gets (char *str) 210
11.39 int getw (FILE *stream) 211
11.40 int isatty (int handle) 212
11.41 int lock (int handle, long offset,
long length) 212
11.42 int locking (int handle, int mode,
long length) 212
11.43 long lseek (int handle, long offset,
int origin) 213
11.44 int open (const char *filename, int
accesss, unsigned mode)
int _rtl_open (const char *filename,
int access) 215
11.45 void perror (const char *str) 216
11.46 int printf (const char *format,
arg-list) 217
11.47 int putc (int ch, FILE *stream) 219
11.48 int putch (int ch) 219
11.49 int putchar (int ch) 219
11.50 int puts (const char *str) 220
11.51 int putw (int i, FILE *stream) 220
11.52 int read (int fd, void *buf,
unsigned count)
int_rtl_read (int fd, void *buf, unsigned
count) 220
11.53 int remove (const char *fname) 221
11.54 int rename (const char *oldfname,
const char *newfname) 222
11.55 void rewind (FILE *stream) 223
11.56 int_rtl_chmod (const char *filename,
int get_set, int attrib) 223
11.57 int scanf (const char *format,
arg-list) 224
11.58 void setbuf (FILE *stream, char
*buf) 226
11.59 int setmode (int handle, int mode) 227
11.60 int setvbuf (FILE *stream, char *buf,
int mode, size_t size) 227
11.61 int sopen (const char *filename, int
access, int shflag, int mode) 228
11.62 int sprintf (char *buf, const char
*format, arg-list) 229
11.63 int sscanf (char *buf, const char
*format, arg-list) 229
11.64 int stat (char *filename, struct stat
*statbuf) 230
11.65 long tell (int fd) 231
11.66 FILE *tmpfile (void) 231
11.67 char *tmpnam (char *name) 232
11.68 int ungetc (int ch, FILE *stream) 232
11.69 int ungetch (int ch) 233
11.70 int unlink (const char *fname) 234
11.71 int unlock (int handle, long
offset, long length) 234
11.72 int vprintf (const char *format,
va_list arg_ptr)
int vfprintf (FILE *stream, const char
*format, va_list arg_ptr)
int vsprintf (char *buf, const char *format,
va_list arg_ptr) 235
11.73 int vscanf (const char *format, va_list
arg_ptr)
int vfscanf (FILE *stream, const char
*format, va_list arg_ptr)
int vsscanf (const char *buf, const char
*format, va_list arg_ptr) 235
11.74 int write (int handle, void *buf, int count)
int _rtl_write (int handle, void *buf, int
count) 236
第12章 字符串. 内存和字符函数 238
12.1 int isalnum(int ch) 238
12.2 int isalpha(int ch) 239
12.3 int isascii(int ch) 239
12.4 int iscntrl(int ch) 240
12.5 int isdigit(int ch) 240
12.6 int isgraph(int ch) 241
12.7 int islower(int ch) 242
12.8 int isprint(int ch) 242
12.9 int ispunct(int ch) 243
12.10 int isspace(int ch) 243
12.11 int isupper(ch) 244
12.12 int isxdigit(int ch) 244
12.13 void *memccpy(void *dest,const void
*source,int ch, size_t count) 245
12.14 void *memchr(const void *buffer, int ch,
size_t count) 245
12.15 int memcmp(const void *buf1,const
void *buf2, size_t count)
int memicmp(const void *buf1,const
void *buf2, size_t count) 246
12.16 void *memcpy(void *dest, const void *source,size_t count) 247
12.17 void *memmove(void *dest, const void
*source,size_t count) 248
12.18 void *memset(void *buf, int ch, size_t
count) 248
12.19 void movmem(const void *source, void
*dest,unsigned count) 248
12.20 void setmem(void *buf, unsigned count,
char ch) 249
12.21 char *stpcpy(char *str1,
const char *str2) 249
12.22 char *strcat(char *str1,
const char *str2) 249
12.23 char *strchr(const char *str,
int ch) 250
12.24 int strcmp(const char *str1,
const char *str2) 251
12.25 int strcoll(const char *str1,
const char *str2) 251
12.26 char *strcpy(char *str1, const
char *str2) 251
12.27 size_t strcspn(const char *str1,
const char *str2) 252
12.28 char *strdup(const char *str) 252
12.29 char *_strerror(const char *str) 253
12.30 char *strerror(int num) 253
12.31 int stricmp(const char *str1, const
char *str2)
int strcmpi(const char *str1, const
char *str2) 253
12.32 size_t strlen(const char *str) 254
12.33 char *strlwr(char *str) 254
12.34 char *strncat(char *str1, const char
*str2, size_t count) 255
12.35 int strncmp(const char *str1, const
char *str2, size_t count)
int strnicmp(const char *str1, const
char *str2, size_t count)
int strncmpi(const char *str1, const
char *str2, size_t count) 256
12.36 char *strncpy(char *dest, const char
*source,size_t count) 257
12.37 char *strnset(char *str, int ch, size_t
count) 257
12.38 char *strpbrk(const char *str1, const
char *str2) 257
12.39 char *strrchr(const char *str, int ch) 258
12.40 char *strrev(char *str) 259
12.41 char *strset(char *str, int ch) 259
12.42 size_t strspn(const char *str1, const
char *str2) 259
12.43 char *strstr(const char *str1, const
char *str2) 260
12.44 char *strtok(char *str1, const char
*str2) 260
12.45 char *strupr(char *str) 261
12.46 size_t strxfrm(char *dest, const char
*source, size_t count) 262
12.47 int tolower(int ch)
int _tolower(int ch) 262
12.48 int toupper(int ch) int _toupper
(int ch) 262
第13章 数学函数 264
13.1 double acos(double arg) long double
acosl(long double arg) 264
13.2 double asin(double arg) long double
asinl(long double arg) 265
13.3 double atan(double arg) long double
atanl(long double arg) 265
13.4 double atan2(double y, double x)
long double atan2l(long double y,
long double x) 266
13.5 double cabs(struct complex znum) long
double cabsl(struct _complexl znum) 267
13.6 double ceil(double num) long double
ceill(long double num) 267
13.7 double cos(double arg) long double cosl
(long double arg) 268
13.8 double cosh(double arg), long double
coshl(long double arg) 268
13.9 double exp(double arg), long double
expl(long double arg) 269
13.10 double fabs(double num), long double
fabsl(long double num) 269
13.11 double floor(double num), long double
floorl(long double num) 270
13.12 double fmod(double x, double y),
long double fmodl(long double x,
long double y) 270
13.13 double frexp(double num, int *exp),
long double frexpl(long double num,
int *exp) 270
13.14 double hypot(double x, double y)
long double hypotl(long double x,
long double y) 271
13.15 double ldexp(double num, int exp)
long double ldexpl(long double num,
int exp) 271
13.16 double log(double num) long double
logl(long double num) 272
13.17 double log10(double num), long double
log10l(long double num) 272
13.18 int _matherr(struct exception *err), int
_matherrl(struct _exceptionl *err) 273
13.19 double modf(double num, double *i),
long double modfl(long double num,
long double *i) 274
13.20 double poly(double x, int n, double c[ ])
long double polyl(long double x, int n,
long double c[ ]) 274
13.21 double pow(double base, double exp)
long double powl(long double base,
long double exp) 275
13.22 double pow10(int n) long double
pow10l(int n) 275
13.23 double sin(double arg) long double
sinl(long double arg) 276
13.24 double sinh(double arg) long double
sinhl(long double arg) 276
13.25 double sqrt(double num) long double
sqrtl(long double num) 277
13.26 double tan(double arg) long double
tanl(long double arg) 277
13.27 double tanh(double arg) long double
tanhl(long double arg) 278
第14章 时间. 日期以及系统相关函数 279
14.1 char *asctime(const struct tm *ptr) 280
14.2 clock_t clock(void) 280
14.3 char *ctime(const time_t *time) 281
14.4 double difftime(time_t time2,
time_t time1) 282
14.5 void disable(void)
void _disable(void) 282
14.6 unsigned _dos_close(int fd) 283
14.7 unsigned _dos_creat(const char *fname,
unsigned attr, int *fd)
unsigned _dos_creatnew(const char *fname,
unsigned attr, int *fd) 283
14.8 void _dos_getdate(struct dosdate_t
*d), void _dos_gettime(struct
dostime_t *t) 284
14.9 unsigned _dos_getdiskfree(unsigned
char drive,struct diskfree_t *dfptr) 285
14.10 void _dos_getdrive(unsigned
*drive) 286
14.11 unsigned _dos_getfileattr(const char
*fname,unsigned *attrib) 286
14.12 unsigned _dos_getftime(int fd, unsigned
*fdate,unsigned *ftime) 287
14.13 unsigned _dos_open(const char *fname,
unsigned mode, int *fd) 288
14.14 unsigned _dos_read(int fd, void *buf,
unsigned count,unsigned *numread) 289
14.15 unsigned _dos_setdate(struct
dosdate_t *d)
unsigned _dos_settime(struct
dostime_t *t) 289
14.16 void _dos_setdrive(unsigned drive,
unsigned *num) 290
14.17 unsigned _dos_setfileattr(const char
*fname, unsigned attrib) 291
14.18 unsigned _dos_setftime(int fd, unsigned
fdate, unsigned ftime) 291
14.19 long dostounix(struct date *d,
struct time *t) 293
14.20 unsigned _dos_write(int fd, void
*buf, unsigned count,unsigned
*numwritten) 293
14.21 void enable(void), void _enable
(void) 294
14.22 void ftime(struct timeb *time) 294
14.23 void geninterrupt(int intr) 295
14.24 void getdate(struct date *d), void
gettime(struct time *t) 295
14.25 void getdfree(unsigned char drive,
struct dfree *dfptr) 295
14.26 int getftime(int handle, struct ftime
*ftptr) 296
14.27 struct tm *gmtime(const time_t
*time) 297
14.28 int kbhit(void) 298
14.29 struct tm *localtime(const
time_t *time) 298
14.30 time_t mktime(struct tm *p) 299
14.31 void setdate(struct date *d), void
settime(struct time *t) 299
14.32 int setftime(int handle, struct
ftime *t) 300
14.33 void sleep(unsigned time) 301
14.34 int stime(time_t *t) 301
14.35 char *_strdate(char *buf), char
*_strtime(char *buf) 301
14.36 size_t strftime(char *str, size_t
maxsize,char const *fmt, const
struct tm *time) 302
14.37 time_t time(time_t *time) 302
14.38 void tzset(void) 304
14.39 void unixtodos(long utime, struct date
*d,struct time *t) 304
第15章 动态分配 305
15.1 void *alloca(size_t size) 305
15.2 void *calloc(size_t num, size_t size) 306
15.3 void free(void *ptr) 307
15.4 int heapcheck(void) 307
15.5 int heapcheckfree(unsigned fill) 308
15.6 int heapchecknode(void *ptr) 309
15.7 int _heapchk(void) 310
15.8 int heapfillfree(unsigned fill) 310
15.9 int _heapmin(void) 310
15.10 int _heapset(unsigned fill) 311
15.11 int heapwalk(struct heapinfo
*hinfo), int _rtl_heapwalk
(_HEAPINFO *hinfo) 311
15.12 void *malloc(size_t size) 313
15.13 void *realloc(void *ptr, size_t
newsize) 313
第16章 目录函数 315
16.1 int chdir(const char *path) 315
16.2 int _chdrive(int drivenum) 315
16.3 void closedir(DIR *ptr) DIR *opendir(char
*dirname) struct dirent *readdir(DIR *ptr)
void rewinddir(DIR *ptr) 315
16.4 unsigned _dos_findfirst(const char *fname,
int attr, struct find_t *ptr) unsigned
_dos_findnext (struct find_t *ptr) 316
16.5 int findfirst(const char *fname, struct ffblk
*ptr, int attrib)
int findnext(struct ffblk *ptr) 317
16.6 void fnmerge(char *path, const char
*drive, const char *dir, const char
*fname, const char *ext)
int fnsplit(const char *path, char *drive,
char *dir, char *fname, char *ext) 319
16.7 char *_fullpath(char *fpath, const char
*rpath, int len) 320
16.8 int getcurdir(int drive, char *dir) 320
16.9 char *getcwd(char *dir, int len) 321
16.10 char *_getdcwd(int drive, char *path,
int len) 322
16.11 int getdisk(void) 322
16.12 int _getdrive(void) 323
16.13 void _makepath(char *pname, const char
*drive, const char *directory, const char
*fname, cont char *extension) 323
16.14 int mkdir(const char *path) 324
16.15 char *mktemp(char *fname) 324
16.16 int rmdir(const char *path) 325
16.17 char *searchpath(const char *fname) 325
16.18 int setdisk(int drive) 326
16.19 void _splitpath(const char *fpath, char
*drive, char *directory char *fname,
char *extension) 326
第17章 进程控制函数 328
17.1 void abort(void) 328
17.2 int atexit(void (*func)(void )) 328
17.3 unsigned long _beginthread( void (*func)
(void *), unsigned stksize, void *arglist)
unsigned long _beginthreadex(void *sec-
attr, unsigned stksize, unsigned (*start)
(void *), void *arglist, unsigned create flags, unsigned *threadID)
unsigned long _beginthreadNT(void
(*func) (void *), unsigned stksize, void
*arglist, void *secattr, unsigned create-
flags, unsigned *threadID); 329
17.4 void _c_exit(void) void _cexit(void) 331
17.5 void _endthread(void) void _endthre-
adex(unsigned threadvalue) 331
17.6 int execl(char *fname, char *arg0,...,
char *argN, NULL) int execle(char
*fname, char *arg0,...., char *argN,
NULL, char *envp[ ])
int execlp(char *fname, char *arg0,...,
char *argN, NULL)
int execlpe(char *fname, char *arg0,..., char
*argN, NULL, char *envp[ ])
int execv(char *fname, char *arg[ ])
int execve(char *fname, char *arg[ ], char
*envp[ ])
int execvp (char *fname, char *arg[ ])
int execvpe(char *fname, char *arg[ ], char *envp[ ]) 332
17.7 void exit(int status) void _exit
(int status) 333
17.8 int getpid(void) 334
17.9 int spawnl(int mode, char *fname, char
*arg0,..., char *argN, NULL)
int spawnle(int mode, char *fname, char
*arg0,..., char *argN, NULL, char *envp[ ])
int spawnlp(int mode, char *fname, char
*arg0,..., char *argN, NULL)
int spawnlpe(int mode, char *fname, char *arg0,..., char *argN, NULL, char *envp[ ])
int spawnv(int mode, char *fname, char *arg[ ])
int spawnve(int mode, char *fname, char *arg[ ], char *envp[ ])
int spawnvp(int mode, char *fname, char *arg[ ])
int spawnvpe(int mode, char *fname, char
*arg[ ], char *envp[ ]) 335
17.10 int wait(int *status) 337
第18章 基于屏幕的文本函数 338
18.1 char *cgets(char *inpstr) 338
18.2 void clreol(void)
void clrscr(void) 339
18.3 int cprintf(const char *fmt,...) 340
18.4 int cputs(const char *str) 340
18.5 int cscanf(char *fmt, ...) 341
18.6 void delline(void) 342
18.7 int gettext(int left, int top, int right, int
bottom, void *buf) 342
18.8 void gettextinfo(struct text_info
*info) 343
18.9 void gotoxy(int x, int y) 343
18.10 void highvideo(void) 344
18.11 void insline(void) 344
18.12 void lowvideo(void) 345
18.13 int movetext(int left, int top, int right, int
bottom, int newleft, int newtop) 345
18.14 void normvideo(void) 346
18.15 int puttext(int left, int top, int right, int
bottom, void *buf) 346
18.16 void textattr(int attr) 346
18.17 void textbackground(int color) 347
18.18 void textcolor(int color) 347
18.19 void textmode(int mode) 348
18.20 int wherex(void) int wherey(void) 349
18.21 void window(int left, int top, int right,
int bottom) 349
第19章 杂项函数 350
19.1 int abs(int num) 350
19.2 void asset(int exp) 351
19.3 double atof(const char *str)
long double _atold(const char *str) 351
19.4 int atoi(const char *str) 352
19.5 long atol(const char *str) 352
19.6 void *bsearch(const void *key, const void
*base, size_t num, size_t size, int (*compare)
(const void *, const void *)) 353
19.7 unsigned int _clear87(void) 354
19.8 unsigned int _control87(unsigned fpword,
unsigned fpmask) 355
19.9 div_t div(int numerator, int
denominator) 355
19.10 char *ecvt(double value, int ndigit,
int *dec, int *sign) 356
19.11 void _ _emit_ _(unsigned char arg, ...) 356
19.12 char *fcvt(double value, int ndigit, int
*dec, int *sign) 356
19.13 void _fpreset(void) 357
19.14 char *gcvt(double value, int ndigit,
char *buf) 357
19.15 char *getenv(const char *name) 357
19.16 char *getpass(const char *str) 358
19.17 unsigned getpid(void) 358
19.18 char *itoa(int num, char *str,
int radix) 358
19.19 long labs(long num) 359
19.20 ldiv_t ldiv(long numerator, long
denominator) 360
19.21 void *lfind(const void *key, const void
*base, size_t *num,size_t size, int (*co-
mpare) (const void *, const void *)
void *lsearch(const void *key, void
*base, size_t *num, size_t size, int
(*compare) (const void *,
const void *)) 360
19.22 struct lconv *localeconv(void) 362
19.23 void longjmp( jmp_buf envbuf, int val) 362
19.24 char *ltoa(long num, char *str, int radix)
char *ultoa(unsigned long num, char
*str, int radix) 363
19.25 unsigned long _lrotl(unsigned long l, int i)
unsigned long _lrotr(unsigned long l,
int i ) 364
19.26 max(x,y) min(x,y) 365
19.27 int mblen(const char *str,
size_t size) 365
19.28 size_t mbstowcs(wchar_t *out,
const char *in, size_t size) 366
19.29 int mbtowc(wchar_t *out, const char *in,
size_t size) 366
19.30 int putenv(const char *evar) 366
19.31 void qsort(void *base, size_t num, size_t
size,int (*compare) (const void *, const
void * )) 367
19.32 int raise(int signal) 368
19.33 int rand(void) 369
19.34 int random(int num)
void randomize(void) 369
19.35 unsigned short _rotl(unsigned short
val, int num)
unsigned short _rotr(unsigned short
val, int num) 370
19.36 void _setcursortype(int type) 371
19.37 int setjmp(jmp_buf envbuf) 371
19.38 void _searchenv(const char *fname,
const char *ename,char *fpath) 372
19.39 char *setlocale(int type, const char
*locale) 372
19.40 void (*set_new_handler(void
( *newhand)( )))( ) 373
19.41 void (*signal (int signal, void (*sigfunc)
(int func)))(int) 373
19.42 void srand(unsigned seed) 374
19.43 unsigned int _status87(void) 375
19.44 double strtod(const char *start, char **end)
long double _strtold(const char *start, char
**end) 375
19.45 long strtol(const char *start, char **end,
int radix)
unsigned long strtoul(const char *start,
char **end, int radix) 376
19.46 void swab(char *source, char *dest,
int num) 377
19.47 int system(const char *str) 377
19.48 to ascii (int ch) 378
19.49 unsigned umask(unsigned access) 378
19.50 int utime(char *fname, struct
utimbuf *t) 378
19.51 void va_start(va_list argptr, last_parm)
void va_end(va_list argptr)
type va_arg(va_list argptr, type) 379
19.52 size_t wcstombs(char *out, const wchar_t
*in, size_t size) 381
19.53 int wctomb(char *out, wchar_t in) 381
第三部分 C++的详细特性
第20章 C++概述 383
20.1 C++的起源 383
20.2 什么是面向对象编程 384
20.2.1 封装 384
20.2.2 多态 385
20.2.3 继承 385
20.3 C++基础 385
20.4 进一步考察头与名空间 388
20.4.1 新式的头 388
20.4.2 名空间 389
20.5 C++类简介 389
20.6 函数重载 392
20.7 运算符重载 395
20.8 继承 395
20.9 构造函数与析构函数 398
20.10 C++关键字 401
20.11 两种新的数据类型 402
第21章 进一步考察类与对象 403
21.1 参数化构造函数 403
21.2 友元函数 407
21.3 缺省函数参数 411
21.4 类与结构是相关的 414
21.5 联合与类是相关的 416
21.6 内联函数 417
21.7 把对象传递给函数 420
21.8 返回对象 421
21.9 对象赋值 422
21.10 对象数组 423
21.10.1 初始化对象数组 424
21.10.2 创建时初始化与未初始化的数组 426
21.11 对象指针 426
第22章 函数与运算符重载 429
22.1 重载构造函数 429
22.2 局部化变量 430
22.3 函数重载与多义性 433
22.4 查找重载函数的地址 435
22.5 this指针 436
22.6 运算符重载 437
22.7 引用 446
22.7.1 引用参数 446
22.7.2 对对象传递引用 448
22.7.3 返回引用 449
22.7.4 独立引用 450
22.8 使用引用重载一元运算符 451
22.9 重载[ ] 454
22.10 应用运算符重载 457
第23章 继承. 虚函数与多态 462
23.1 继承与访问指示符 462
23.1.1 理解访问指示符 462
23.1.2 基类访问控制 464
23.2 派生类中的构造函数与析构函数 466
23.3 多重继承 469
23.4 给基类传递参数 471
23.5 指向派生类型的指针和引用 472
23.6 虚函数 474
23.7 为何要用虚函数 479
23.8 纯虚函数和抽象类型 482
23.9 前置绑定与滞后绑定 484
第24章 C++ I/O类库 486
24.1 C++为什么有自己的I/O系统 486
24.2 旧式与新式的C++ I/O 486
24.3 C++ 流 486
24.4 C++ 流类 487
24.5 创建自己的插入符与提取符 488
24.5.1 生成插入符 488
24.5.2 重载提取符 490
24.6 格式化 I/O 492
24.6.1 使用ios成员函数进行格式化 492
24.6.2 使用操纵符 495
24.7 创建自己的操纵符函数 497
24.8 文件I/O 499
24.8.1 打开与关闭文件 499
24.8.2 读写文本文件 501
24.9 无格式和二进制I/O 502
24.9.1 使用get( )和put( ) 503
24.9.2 使用read( )和write( ) 504
24.9.3 检测EOF 505
24.9.4 随机存取 506
第25章 模板. 例外与RTTI 509
25.1 普通函数 509
25.1.1 一个带有两种普通类型的函数 510
25.1.2 显式重载一个普通函数 511
25.1.3 重载函数模板 513
25.1.4 普通函数的限制 513
25.2 普通类 514
25.3 例外处理 518
25.4 例外处理基础 518
25.4.1 捕获类的类型 522
25.4.2 使用多重catch语句 523
25.4.3 处理派生类的例外 524
25.5 例外处理选项 525
25.5.1 捕获所有的例外 525
25.5.2 限制例外 526
25.5.3 重新引发例外 528
25.5.4 理解terminate( )与unexpected( ) 529
25.5.5 设定Terminate和Unexpected处理器 529
25.6 uncaught_exception( )函数 530
25.7 例外处理的应用 530
25.8 运行时类型标识(RTTI) 531
25.9 强制转换运算符 533
第26章 C++的其他主题 537
26.1 使用new和delete动态分配内存 537
26.1.1 为对象分配空间 539
26.1.2 监视内存分配失败的另一种方法 542
26.1.3 重载new与delete 542
26.1.4 为数组重载new与delete 547
26.2 static类成员 549
26.2.1 static数据成员 549
26.2.2 static成员函数 550
26.3 虚拟基类 553
26.4 const成员函数与mutable成员函数 556
26.5 可变的成员函数 558
26.6 使用asm关键字 558
26.7 链接规范 558
26.8 . *与 ->* 运算符 559
26.9 构造转换函数 561
26.10 拷贝构造函数 563
26.11 授权访问 565
26.12 名空间 567
26.12.1 名空间基础 568
26.12.2 using 570
26.12.3 无名的名空间 572
26.12.4 一些名空间选项 573
26.12.5 std名空间 575
26.13 显式的构造函数 576
26.14 typename与export 577
26.15 C与C++之间的区别 577
第27章 标准模板库与字符串类 579
27.1 STL概述 579
27.1.1 容器 579
27.1.2 算法 580
27.1.3 迭代器 580
27.1.4 其他STL元素 580
27.2 容器类 581
27.3 操作的一般理论 582
27.4 vector容器 583
27.4.1 通过迭代器访问vector容器 586
27.4.2 插入和删除vector容器中的元素 587
27.4.3 在vector容器中保存类对象 589
27.5 list容器 591
27.5.1 理解end()函数 594
27.5.2 push_front()与push_back() 595
27.5.3 list排序 596
27.5.4 合并list 597
27.5.5 在list中保存类对象 598
27.6 map容器 600
27.7 算法(algorithm) 605
27.7.1 计数 607
27.7.2 删除与替换元素 608
27.7.3 反转序列 610
27.7.4 转换序列 611
27.8 使用函数对象 612
27.8.1 一元与二元函数对象 612
27.8.2 使用内建的函数对象 612
27.8.3 构造函数对象 615
27.8.4 使用绑定器 617
27.9 string类 618
27.9.1 string的一些成员函数 622
27.9.2 string是容器 626
27.9.3 把string放入其他的容器 627
27.10 总结STL 627
第四部分 C++Builder集成开发环境
第28章 集成开发环境 629
28.1 IDE的四个窗口 629
28.2 Menu窗口 630
28.2.1 File 630
28.2.2 Edit 632
28.2.3 Search 633
28.2.4 View 634
28.2.5 Project 635
28.2.6 Run 637
28.2.7 Component 637
28.2.8 Tools 639
28.2.9 Help 641
28.2.10 工具栏 641
28.3 Object Inspector窗口 642
28.4 Form窗口 642
28.5 Code窗口 642
28.6 使用快捷菜单 642
28.7 使用上下文相关帮助 642
第29章 使用IDE开发应用程序 644
29.1 应用程序的类型 644
29.1.1 New 645
29.1.2 Project1 646
29.1.3 Forms 646
29.1.4 Dialogs 646
29.1.5 Projects 646
29.2 组件模板 647
29.2.1 标准组件 647
29.2.2 Additional组件 648
29.2.3 Win32组件 649
29.2.4 System组件 649
29.2.5 Dialogs组件 650
29.2.6 Win3.1组件 650
29.2.7 Samples组件 651
29.2.8 ActiveX组件 651
29.2.9 Internet组件 652
29.2.10 Servers组件 652
29.3 创建控制台程序 652
29.3.1 使用IDE创建控制台程序 653
29.3.2 编译本书中的例子程序 656
29.3.3 使用命令行编译器 656
29.4 创建简单的Windows应用程序 657
29.4.1 预备步骤 657
29.4.2 创建应用程序 658
29.4.3 建立GUI窗体 659
29.4.4 添加Label和Edit组件 660
29.4.5 使用ActionList和ImageList组件 662
29.4.6 创建基本菜单 667
29.4.7 创建工具栏 668
29.4.8 建立命令按钮 670
29.4.9 添加Help | About 对话框 670
29.4.10 添加代码完成程序 672
第30章 使用C++Builder集成调试环境 674
30.1 准备要调试的程序 674
30.2 什么是源代码级的调试器 674
30.3 调试器基础 674
30.4 断点 677
30.4.1 设置无条件源代码断点 677
30.4.2 设置条件源代码断点 678
30.5 观测变量 679
30.5.1 观测表达式的格式 680
30.5.2 使变量名有效 682
30.6 观测堆栈 683
30.7 计算表达式 684
30.8 暂停程序 684
30.9 使用CPU窗口 684
30.10 调试技巧 685