《指针的艺术》主要探讨C语言指针的基本概念及其与变量、数组、结构体和文件之间的应用,同时剖析C++、C++/CLR、Java、Visual C#及Visual Basic中的引用(Reference),并分别以指针和引用(Reference)实现链表、堆栈与队列。
全书共七篇。针对以下14个主题,分别在C、C++、C++/CLR、Java、Visual C#及Visual Basic程序语言中比较其用法:变量的定义、算术运算符、关系运算符、逻辑运算符、输出函数、输入函数、选择结构、循环结构、数组、函数调用、指针与引用(Referenee)、指向或引用(Reference)到空的表示法、动态分配内存、回收内存。
《指针的艺术》适合C、C++、C++/CLR、Java、Visual C#及Visual Basic程序设计人员使用,希望通过《指针的艺术》的内容,能够帮助读者透彻理解指针的概念并在实践中能够灵活运用。书中所有范例代码均可在配书光盘中找到。
第一篇 C程序语言篇 1
第1章 内存的基本概念 3
1-1 变量 4
1-2 一维数组 5
1-3 二维数组 9
1-4 结构体 11
1-5 问题演练 13
第2章 指针与变量 15
2-1 一颗星星:表示一把钥匙 16
2-2 两颗星星:表示两把钥匙 19
2-3 三颗星星:表示三把钥匙 21
2-4 问题演练 23
第3章 指针与数组 25
3-1 指针与一维数组 26
3-2 指针与二维数组 32
3-3 数组指针 35
3-4 为什么parr等同于*parr 36
3-5 指向数组的指针 38
3-6 多重指针 44
3-7 命令行自变量 51
3-8 调试题 54
3-9 问题演练 55
3-10 程序实战 62
第4章 指针与函数 63
4-1 函数初探 64
4-2 两数对调 64
4-3 再论传址调用 66
4-3-1 寻找数组中的最大值 66
4-3-2 一维数组的元素求和 67
4-3-3 二维数组的元素求和 69
4-4 指向函数的指针 70
4-5 返回指针的函数 72
4-6 调试题 74
4-7 问题演练 77
4-8 程序实战 77
第5章 指针与字符串 79
5-1 字符串指针 80
5-2 常用的库函数 83
5-2-1 计算字符串的长度 83
5-2-2 字符串的复制 84
5-2-3 字符串的连接 87
5-2-4 字符串的比较 88
5-3 调试题 93
5-4 程序实战 94
第6章 指针与结构体 95
6-1 指向结构体变量的指针 96
6-2 结构体指针与自增运算符 100
6-3 结构体与函数 102
6-4 自引用 105
6-5 调试题 111
6-6 问题演练 119
第7章 链表——以C程序实现 121
7-1 单向链表 122
7-2 双向链表 126
7-3 链表的应用——堆栈的实现 130
7-4 链表的应用——队列的实现 134
7-5 程序实战 138
第8章 指针与文件 139
8-1 fprintf与fscanf函数 140
8-2 fwrite与fread函数 143
8-3 当前文件的指针指向何处 145
8-4 龟etpos与fsetpos函数 147
8-5 rewind 149
8-6 程序实战 150
第二篇 C++程序语言篇 151
第9章 简易Visual C++2008使用手册 153
第10章 C++的reference 157
10-1 变量与reference 158
10-2 两数对调 159
10-2-1 传值调用 159
10-2-2 引用调用(call by reference) 160
10-3 结构体与reference 163
10-4 类与reference 166
10-5 问题演练 171
10-6 程序实战 172
第11章 C++的this指针 173
11-1 this指针 174
11-2 股票买卖范例程序 177
11-3 程序实战 180
第12章 C++的new与delete 181
12-1 new、delete与变量 182
12-2 new、delete与数组 184
12-3 new、delete与结构体 186
12-4 new、delete与类 187
12-5 程序实战 190
第13章 C++的复制构造函数 191
13-1 复制构造函数 192
13-2 重载赋值运算符 196
13-3 程序实战 200
第14章 虚函数、指针与reference 201
14-1 虚函数 202
14-2 程序实战 205
第15章 链表——以C++程序实现 207
15-1 单向链表 208
15-2 双向链表 213
15-3 堆栈 218
15-4 程序实战 220
第三篇 C++/CLR程序语言篇 221
第16章 简易Visual C++/CLR使用手册 223
第17章 浅谈C++/CLR程序设计 227
17-1 可跟踪的reference 228
17-2 可跟踪的handle 228
17-3 数组 229
17-3-1 一维数组 229
17-3-2 二维数组 231
17-3-3 不规则数组 232
17-4 Interior指针 233
17-5 函数: 233
17-5-1 两数对调 233
17-5-2 找出数组的最大值 236
17-5-3 计算数组的总和 237
17-5-4 计算二维数组的总和 238
17-5-5 计算不规则数组的总和 239
17-6 程序实战 240
第18章 链表——以Visual C++/CLR实现 241
18-1 以单向链表处理数据 242
18-2 以双向链表处理数据 245
18-3 使用链表实现堆栈 248
18-4 程序实战 250
第四篇 Java程序语言篇 251
第19章 简易JCreator使用手册 253
19-1 安装JCreator编译程序 254
19-2 编写、编译与运行程序 256
19-3 程序的调试(debug) 257
19-4 创建项目文件 258
第20章 变量、字符串与refererice 259
20-1 变量与引用(reference) 260
20-2 字符串与引用(reference) 261
20-3常用的字符串库函数 264
20-4 程序实战 267
第21章 数组与reference 269
21-1 数组初探 270
21-2 数组的复制 275
21-3 如何传送数组 278
21-4 二维数组 283
21-5 程序实战 286
第22章 类与reference 287
22-1 类与引用(reference) 288
22-2 复制构造函数 291
22-3 this指针 297
22-4 程序实战 298
第23章 链表——以Java程序实现 299
23-1 单向链表 300
23-2 双向链表 304
23-3 堆栈的操作 310
23-4 程序实战 314
第五篇 Visual C# 2008程序语言篇 315
第24章 简易Visual C#使用手册 317
第25章 变量与reference 321
25-1 传值调用 322
25-2 引用调用(call by reference) 323
25-3 特殊的参数out 324
25-4 程序实战 326
第26章 数组与reference 327
26-1 找出一维数组的最大值 328
26-2 一维数组的求和 329
26-3 二维数组的求和 330
26-4 不规则数组的求和 331
26-5 程序实战 332
第27章 链表——以Visual C#实现 333
27-1 数据的转换 334
27-2 单向链表 334
27-3 双向链表 338
27-4 链表的应用——堆栈的实现 342
27-5 程序实战 346
第六篇 Visual Basic 2008程序语言篇 347
第28章 简易Visual Basic使用手册 349
第29章 函数与reference 353
29-1 传值调用(call by value) 354
29-2 引用调用(call by reference) 354
29-3 程序实战 355
第30章 数组与reference 357
30-1 找出数组的最大值 358
30-2 数组的求和 360
30-2-1 一维数组的求和 360
30-2-2 二维数组的求和 361
30-3 不规则数组 362
30-4 程序实战 364
第31章 链表——以Visual Basic实现 365
31-1 链表的基本概念 366
31-2 单向链表 368
31-3 双向链表 372
31-4 链表的应用——堆栈的实现 376
31-5 程序实战 380
第七篇 比较篇 381
附录A 解答 393
1