《C++程序设计》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:姜学锋,周果清,刘君瑞编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2012
  • ISBN:9787302281719
  • 页数:647 页
图书介绍:本书是针对大学计算机基础课程教学的教材,系统介绍了C++的基本语法、程序设计方法及常用算法。

第1章 程序设计基础 1

1.1计算机系统和工作原理 1

1.1.1计算机系统的组成 1

1.1.2指令与程序 3

1.2信息的表示与存储 5

1.2.1计算机的数字系统 5

1.2.2进位计数制的转换 6

1.2.3数值数据的表示 9

1.2.4非数值数据的表示 13

1.3程序设计语言 14

1.3.1机器语言与汇编语言 14

1.3.2高级语言 15

1.4程序设计概述 16

1.4.1计算机问题求解的基本特点 16

1.4.2算法的定义与特性 16

1.4.3算法的表示 17

1.4.4结构化程序设计 19

1.4.5面向对象程序设计 20

1.4.6程序设计技术前沿 20

1.5 C++概述 21

1.5.1 C++与C语言 21

1.5.2 C++基本词法 22

1.5.3简单的C++程序 23

1.5.4 C++程序基本结构 27

1.5.5 C++程序开发步骤 29

1.5.6 C++程序编码风格 30

习题 30

第2章 数据类型与表达式 31

2.1数据类型 31

2.1.1整型 32

2.1.2浮点型 33

2.1.3字符型 34

2.1.4逻辑型 35

2.2常量 35

2.2.1整型常量 36

2.2.2浮点型常量 36

2.2.3字符常量 37

2.2.4字符串常量 39

2.2.5符号常量 40

2.3变量 41

2.3.1变量的概念 41

2.3.2定义变量 41

2.3.3使用变量 42

2.3.4存储类别 43

2.3.5类型限定 43

2.4运算符与表达式 44

2.4.1运算符与表达式的概念 44

2.4.2算术运算符 47

2.4.3自增自减运算符 48

2.4.4关系运算符 49

2.4.5逻辑运算符 50

2.4.6条件运算符 52

2.4.7位运算符 53

2.4.8赋值运算符 57

2.4.9取长度运算符 59

2.4.10逗号运算符 59

2.4.11圆括号运算符 60

2.4.12常量表达式 60

2.5类型转换 60

2.5.1隐式类型转换 60

2.5.2显式类型转换 63

习题 64

第3章 程序控制结构 67

3.1语句 67

3.1.1简单语句 67

3.1.2复合语句 68

3.1.3注释 69

3.1.4语句的写法 71

3.2输入与输出 72

3.2.1输入流与输出流 73

3.2.2字符输入与输出 80

3.2.3格式化输出 81

3.2.4格式化输入 85

3.3程序顺序结构 87

3.3.1顺序执行 87

3.3.2跳转执行 88

3.4程序选择结构 89

3.4.1 if语句 89

3.4.2 switch语句 92

3.4.3选择结构的嵌套 95

3.4.4选择结构程序举例 99

3.5程序循环结构 101

3.5.1 while语句 101

3.5.2 do语句 103

3.5.3 for语句 104

3.5.4 break语句 106

3.5.5 continue语句 107

3.5.6循环结构的嵌套 108

3.5.7循环结构程序举例 108

习题 112

第4章 函数 115

4.1函数定义 115

4.1.1函数定义的一般形式 115

4.1.2函数返回 118

4.2 函数参数 119

4.2.1形式参数 119

4.2.2实际参数 120

4.2.3参数传递机制 120

4.2.4函数调用栈 121

4.2.5 const参数 123

4.2.6可变参数函数 123

4.3函数原型与调用 125

4.3.1函数声明和函数原型 125

4.3.2库函数的调用方法 128

4.3.3常用库函数 129

4.4内联函数 133

4.5默认参数 135

4.5.1带默认参数的函数 135

4.5.2默认参数函数的调用 136

4.6函数重载 137

4.6.1函数重载定义 137

4.6.2重载函数的调用 140

4.7函数模板 142

4.7.1函数模板的概念 142

4.7.2函数模板的定义和使用 143

4.8函数调用形式 147

4.8.1嵌套调用 147

4.8.2递归调用 149

4.9作用域和生命期 151

4.9.1局部变量 151

4.9.2全局变量 152

4.9.3作用域 153

4.9.4程序映像和内存布局 157

4.9.5生命期 159

4.10对象初始化 162

4.11声明与定义 164

4.12变量修饰小结 166

4.13程序组织结构 168

4.13.1内部函数 168

4.13.2外部函数 168

4.13.3多文件结构 168

4.13.4头文件与工程文件 169

4.13.5提高编译速度 171

4.14函数应用程序举例 172

习题 175

第5章 预处理命令 178

5.1宏定义 178

5.1.1不带参数的宏定义 179

5.1.2带参数的宏定义 181

5.1.3#和##预处理运算 185

5.1.4预定义宏 185

5.2文件包含 186

5.3条件编译 188

5.3.1#define定义条件 188

5.3.2#ifdef、#ifndef 188

5.3.3#i f-#elif 189

5.4其他命令 190

习题 191

第6章 数组 193

6.1一维数组的定义和引用 193

6.1.1一维数组的定义 193

6.1.2一维数组的初始化 195

6.1.3一维数组的引用 195

6.2多维数组的定义和引用 197

6.2.1多维数组的定义 197

6.2.2多维数组的初始化 199

6.2.3多维数组的引用 200

6.3数组与函数 203

6.3.1数组作为函数的参数 203

6.3.2数组参数的传递机制 204

6.4字符串 207

6.4.1字符数组 207

6.4.2字符串 209

6.4.3字符串的输入和输出 211

6.4.4字符串数组 213

6.4.5字符串处理函数 214

6.5 C++字符串类 219

6.5.1字符串对象的定义和引用 219

6.5.2字符串对象的操作 220

6.5.3字符串对象数组 223

6.6数组应用程序举例 223

习题 233

第7章 指针与引用 236

7.1指针与指针变量 236

7.1.1地址和指针的概念 236

7.1.2指针变量 237

7.2指针的使用及运算 239

7.2.1获取对象的地址 239

7.2.2指针的间接访问 240

7.2.3指针变量的初始化与赋值 242

7.2.4指针的有效性 244

7.2.5指针运算 245

7.2.6指针的const限定 250

7.3指针与数组 252

7.3.1指向一维数组元素的指针 253

7.3.2指向多维数组元素的指针 257

7.3.3数组指针 260

7.3.4指针数组 262

7.3.5指向指针的指针 264

7.4指针与字符串 267

7.4.1指向字符串的指针 267

7.4.2指针与字符数组的比较 269

7.4.3指向字符串数组的指针 270

7.5指针与函数 272

7.5.1指针作为函数参数 272

7.5.2函数返回指针值 281

7.5.3函数指针 282

7.6动态内存 286

7.6.1动态内存的概念 286

7.6.2动态内存的分配和释放 287

7.6.3动态内存的应用 290

7.7带参数的main函数 294

7.8引用类型 295

7.8.1引用的概念与定义 295

7.8.2引用的使用 296

7.8.3常引用 299

7.8.4对象、指针与引用的比较 300

习题 301

第8章 自定义数据类型 303

8.1结构体类型 303

8.2结构体对象 305

8.2.1结构体对象的定义 305

8.2.2结构体对象的初始化 308

8.2.3结构体对象的使用 308

8.3结构体与数组 309

8.3.1结构体数组 309

8.3.2结构体数组成员 310

8.4结构体与指针 311

8.4.1指向结构体的指针 311

8.4.2指向结构体数组的指针 313

8.4.3结构体指针成员 314

8.5结构体与函数 315

8.5.1结构体对象作为函数参数 315

8.5.2结构体数组作为函数参数 315

8.5.3结构体指针或引用作为函数参数 316

8.5.4函数返回结构体对象、指针或引用 316

8.6共用体 317

8.6.1共用体概念及类型定义 317

8.6.2共用体对象的定义 318

8.6.3共用体对象的使用 319

8.6.4结构体与共用体嵌套 320

8.7枚举类型 320

8.7.1枚举类型的声明 320

8.7.2枚举类型对象 321

8.8位域 321

8.8.1位域的声明 321

8.8.2位域的使用 323

8.9用户自定义类型 324

8.10链表 327

8.10.1链表的概念 327

8.10.2单链表与双链表 327

8.10.3创建与销毁链表 329

8.10.4链表的运算 331

习题 335

第9章 类与对象 337

9.1类的定义和声明 337

9.1.1类的定义 337

9.1.2成员访问控制 340

9.1.3类的数据成员 341

9.1.4类的成员函数 342

9.1.5类声明与类定义 346

9.1.6类之间的关系 347

9.1.7类和结构体的区别 349

9.2对象的定义和使用 349

9.2.1对象的定义 349

9.2.2对象的动态建立和释放 351

9.2.3对象成员的引用 352

9.3构造函数和析构函数 357

9.3.1构造函数 357

9.3.2构造函数的重载 363

9.3.3带默认参数的构造函数 364

9.3.4默认构造函数 366

9.3.5隐式类类型转换 367

9.3.6复制构造函数 368

9.3.7构造函数小结 373

9.3.8析构函数 374

9.3.9构造函数和析构函数的调用次序 376

9.4对象数组 377

9.5对象指针 378

9.5.1指向对象的指针 378

9.5.2类成员指针 378

9.5.3 this指针 380

9.6类作用域与对象生命期 381

9.6.1类作用域 381

9.6.2对象生命期 386

9.7 const限定 389

9.7.1常对象 389

9.7.2常数据成员 390

9.7.3常成员函数 391

9.7.4指向对象的常指针 392

9.7.5指向常对象的指针变量 393

9.7.6对象的常引用 393

9.8静态成员 394

9.8.1静态数据成员 394

9.8.2静态成员函数 396

9.9友元 398

9.9.1友元函数 398

9.9.2友元类 400

9.10类模板 400

9.10.1类模板的定义 400

9.10.2泛型编程 403

9.11数据封装和信息隐蔽 404

习题 406

第10章 继承与派生 408

10.1类的继承与派生 408

10.1.1基类与派生类 408

10.1.2派生类的定义 410

10.1.3派生类的构成 411

10.2派生类成员的访问 412

10.2.1类的保护成员 412

10.2.2派生类成员的访问权限 413

10.3赋值兼容规则 415

10.4派生类的构造和析构函数 416

10.4.1派生类的构造函数 416

10.4.2派生类的析构函数 418

10.5多重继承 418

10.5.1多重继承派生类 418

10.5.2二义性问题及名字支配规则 419

10.5.3虚基类 421

10.6多态性与虚函数 422

10.6.1多态性的概念 422

10.6.2虚函数 426

10.6.3虚析构函数 431

10.6.4纯虚函数 431

10.6.5抽象类 432

10.7命名的强制类型转换 433

习题 438

第11章 运算符重载 439

11.1运算符重载的概念 439

11.2运算符重载的方法 439

11.2.1运算符函数 439

11.2.2重载运算符的规则 442

11.2.3运算符重载为类成员函数 444

11.2.4运算符重载为友元函数 446

11.3典型运算符的重载 447

11.3.1重载双目运算符 447

11.3.2重载单目运算符 449

11.3.3重载复合赋值运算符 450

11.3.4重载流运算符 450

11.3.5重载类型转换运算符 452

习题 453

第12章 异常处理 454

12.1基本概念 454

12.1.1为什么要异常处理 454

12.1.2程序健壮性 455

12.1.3异常处理的方法 455

12.2异常处理的实现 456

12.2.1抛出异常 456

12.2.2检测捕获异常 457

12.2.3函数声明中的异常接口说明 461

12.2.4异常处理中的构造与析构 461

习题 462

第13章 命名空间 463

13.1命名空间的概念 463

13.2命名空间的定义 465

13.2.1命名空间的定义 465

13.2.2未命名的命名空间 469

13.3命名空间的使用 470

13.3.1命名空间成员的使用 470

13.3.2类和命名空间 472

13.3.3标准命名空间的使用 474

习题 475

第14章 标准库 476

14.1 C++标准库 476

14.2标准输入输出 477

14.2.1 C++流的概念 477

14.2.2文件流 479

14.2.3字符串流 486

14.3标准模板库 488

14.3.1迭代器iterator 488

14.3.2向量vector 489

14.3.3列表list 490

14.3.4队列queue 492

14.3.5栈stack 492

习题 493

第15章 算法 495

15.1算法基本概念 495

15.1.1什么是算法 495

15.1.2算法基本要素 495

15.1.3算法求解过程 496

15.2算法分析 497

15.2.1时间复杂度 497

15.2.2空间复杂度 500

15.3常用算法 500

15.3.1分治法 500

15.3.2动态规划 503

15.3.3贪心算法 506

15.3.4回溯法 508

习题 510

第16章 高级编程技术 513

16.1配置开发环境 513

16.1.1开发环境的路径参数 513

16.1.2开发环境的路径设置 514

16.1.3开发环境的配置 516

16.1.4函数库的包含和连接 517

16.1.5函数库配置举例 519

16.2界面编程 522

16.2.1 Windows编程的基本概念 522

16.2.2数据定义与数据类型 523

16.2.3消息与消息循环 526

16.2.4资源与资源文件 528

16.2.5 Windows应用程序结构 537

16.2.6 Windows编程框架 543

16.2.7图形输出 550

16.2.8事件处理 566

16.2.9控件与对话框 575

16.3图形编程 582

16.3.1图形编程概述 582

16.3.2 OpenGL简介 583

16.3.3 GLUT编程模式 585

16.3.4 Win32编程模式 590

16.4多媒体编程 597

16.4.1 MCI编程 597

16.4.2 MCIWnd编程 603

16.4.3 MMAPI编程 608

16.5网络编程 613

16.5.1 Winsock简介 613

16.5.2 Winsock编程 614

16.5.3 TCP编程模式 617

16.5.4 UDP编程模式 621

16.6数据库编程 624

16.6.1数据库编程概述 624

16.6.2 ODBC简介 625

16.6.3 ODBC编程 628

16.6.4数据库编程举例 635

习题 638

附录A ASCII码对照表 640

附录B C++关键字 641

附录C C++运算符及其优先级、结合性 643

参考文献 646