技术教育社区
www.teccses.org

C Primer Plus 第6版 英文版 上下册

封面

作者:[美]史蒂芬·普拉达(Stephen P

页数:510

出版社:人民邮电出版社

出版日期:2021

ISBN:9787115413512

电子书格式:pdf/epub/txt

内容简介

《C Primer Plus(第6版)英文版》详细讲解了C语言的基本概念和编程技巧。
《C Primer Plus(第6版)英文版》共17章。第 1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了C语言的相关知识,包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入输出、结构、位操作等。第 16章、17章介绍C预处理器、C库和高 级数据表示。本书以完整的程序为例,讲解C语言的知识要点和注意事项。每章末设计了大量复习题和编程练习,帮助读者巩固所学知识和提高实际编程能力。附录给出了各章复习题的参考答案和丰富的参考资料。
《C Primer Plus(第6版)英文版》可作为C语言的教材,适用于需要系统学习C语言的初学者,也适用于巩固C语言知识或希望进一步提高编程技术的程序员。

作者简介

Stephen Prata在美国加州肯特菲尔得的马林学院教授天文、物理和计算机科学。他毕业于加州理工学院,在美国加州大学伯克利分校获得博士学位。他单独编写以及与他人合作编写的编程图书有十多本,其中包括C++Primer Plus和C Primer Plus,而且后者获得了计算机出版协会1990年度How—to计算机图书奖。

本书特色

适读人群 :本书适合对C语言感兴趣的初学者阅读;有一定C语言编程经验的读者也可以通过本书获悉C11标准的更新细节。经久不衰的C语言教程
针对C11标准进行更新
C语言领域的作品 本书是一本经过仔细测试、精心设计的完整C语言教程,它涵盖了C语言编程中的核心内容。本书讲解了包含结构化代码和自顶向下设计在内的程序设计原则。
与以前的版本一样,作者的目标仍旧是为读者提供一本入门型、条理清晰、见解深刻的C语言教程。作者把基础的编程概念与C语言的细节很好地融合在一起,并通过大量短小精悍的示例同时演示一两个概念,通过学以致用的方式鼓励读者掌握新的主题。
每章末尾的复习题和编程练习题进一步强化了重要的信息,有助于读者消化那些难以理解的概念。本书采用了友好、易于使用的编排方式,不仅适合打算认真学习C语言编程的学生阅读,也适合那些精通其他编程语言,但希望更好地掌握C语言这门核心语言的开发人员阅读。
本书在之前版本的基础之上进行了升级,它涵盖了C语言新的进展以及C11标准的详细内容。本书还提供了大量深度与广度齐备的教学技术和工具,来提高你的学习。
本书包含如下内容:
详细完整地讨论了C语言的基础特性和附加特性;
清晰解释了使用C语言不同部分的时机,以及原因;
通过简洁、简单的示例加强读者的动手练习,以帮助一次理解一两个概念;
囊括了数百个实用的代码示例;
每章末尾的复习题和编程练习可以检测你的理解情况。
涵盖了C泛型编程,以提供大的灵活性。

目录

1 Getting Ready 1

第 1章 初识C语言

Whence C C语言的起源 1

Why C 选择C语言的理由 2

Design Features 设计特性 2

Efficiency 高效性 3

Portability 可移植性 3

Power and Flexibility 强大而灵活 3

Programmer Oriented 面向程序员 3

Shortcomings 缺点 4

Whither C C语言的应用范围 4

What Computers Do 计算机能做什么 5

High-level Computer Languages and Compilers 高 级计算机语言和编译器 6

Language Standards 语言标准 7

The First ANSI ISO C Standard 第 1个ANSI ISO C标准 8

The C99 Standard C99标准 8

The C11 Standard C11标准 9

Using C: Seven Steps 使用C语言的几个步骤 9

Step 1: Define the Program Objectives 第 1步:定义程序的目标 10

Step 2: Design the Program 第 2步:设计程序 10

Step 3: Write the Code 第3步:编写代码 11

Step 4: Compile 第4步:编译 11

Step 5: Run the Program 第5步:运行程序 12

Step 6: Test and Debug the Program 第6步:测试和调试程序 12

Step 7: Maintain and Modify the Program 第7步:维护和修改代码 13

Commentary 说明 13

Programming Mechanics 编程机制 13

Object Code Files, Executable Files, and Libraries 目标代码文件、可执行文件和库 14

Unix System Unix系统 16

The GNU Compiler Collection and the LLVM Project GNU编译器集合和LLVM项目 18

Linux Systems Linux系统 18

Command-Line Compilers for the PC PC的命令行编译器 19

Integrated Development Environments (Windows) 集成开发环境(Windows) 19

The Windows Linux Option Windows Linux 21

C on the Macintosh Macintosh中的C 21

How This Book Is Organized 本书的组织结构 22

Conventions Used in This Book 本书的约定 22

Typeface 字体 22

Program Output 程序输出 23

Special Elements 特殊元素 24

Summary 本章小结 24

Review Questions 复习题 25

Programming Exercise 编程练习 25

2 Introducing C 27

第 2章 C语言概述

A Simple Example of C 简单的C程序示例 27

The Example Explained 示例解释 28

Pass 1: Quick Synopsis 第 1遍:快速概要 30

Pass 2: Program Details 第 2遍:程序细节 31

The Structure of a Simple Program 简单程序的结构 40

Tips on Making Your Programs Readable 提高程序可读性的技巧 41

Taking Another Step in Using C 进一步使用C 42

Documentation 程序说明 43

Multiple Declarations 多条声明 43

Multiplication 乘法 43

Printing Multiple Values 打印多个值 43

While You’re at It—Multiple Functions 多个函数 44

Introducing Debugging 调试程序 46

Syntax Errors 语法错误 46

Semantic Errors 语义错误 47

Program State 程序状态 49

Keywords and Reserved Identifiers 关键字和保留标识符 49

Key Concepts 关键概念 50

Summary 本章小结 51

Review Questions 复习题 51

Programming Exercises 编程练习 53

3 Data and C 55

第3章 数据和C

A Sample Program 示例程序 55

What’s New in This Program 程序中的新元素 57

Data Variables and Constants 变量与常量数据 59

Data: Data-Type Keywords 数据:数据类型关键字 59

Integer Versus Floating-Point Types 整数和浮点数 60

The Integer 整数 61

The Floating-Point Number 浮点数 61

Basic C Data Types C语言基本数据类型 62

The int Type int类型 62

Other Integer Types 其他整数类型 66

Using Characters: Type char 使用字符:char类型 71

The _Bool Type _Bool类型 77

Portable Types: stdint.h and inttypes.h 可移植类型:stdint.h和inttypes.h 77

Types float, double, and long double float、double和long double 79

Complex and Imaginary Types 复数和虚数类型 85

Beyond the Basic Types 其他类型 85

Type Sizes 类型大小 87

Using Data Types 使用数据类型 88

Arguments and Pitfalls 参数和陷阱 89

One More Example: Escape Sequences 转义序列示例 91

What Happens When the Program Runs 程序运行情况 91

Flushing the Output 刷新输出 92

Key Concepts 关键概念 93

Summary 本章小结 93

Review Questions 复习题 94

Programming Exercises 编程练习 97

4 Character Strings and Formatted Input Output 99

第4章 字符串和格式化输入 输出

Introductory Program 前导程序 99

Character Strings: An Introduction 字符串简介 101

Type char Arrays and the Null Character char类型数组和null字符 101

Using Strings 使用字符串 102

The strlen() Function strlen()函数 103

Constants and the C Preprocessor 常量和C预处理器 106

The const Modifier const限定符 109

Manifest Constants on the Job 明示常量 109

Exploring and Exploiting printf() and scanf() printf()和scanf() 112

The printf() Function printf()函数 112

Using printf() 使用printf() 113

Conversion Specification Modifiers for printf() printf()的转换说明修饰符 115

What Does a Conversion Specification Convert 转换说明的意义 122

Using scanf() 使用scanf() 128

The 最 Modifier with printf() and scanf() printf()和scanf()的最修饰符 133

Usage Tips for printf() printf()的用法提示 135

Key Concepts 关键概念 136

Summary 本章小结 137

Review Questions 复习题 138

Programming Exercises 编程练习 140

5 Operators, Expressions, and Statements 143

第5章 运算符、表达式和语句

Introducing Loops 循环简介 144

Fundamental Operators 基本运算符 146

Assignment Operator: = 赋值运算符:= 146

Addition Operator: + 加法运算符:+ 149

Subtraction Operator: – 减法运算符:- 149

Sign Operators: – and + 符号运算符:-和+ 150

Multiplication Operator: 最 乘法运算符:最 151

Division Operator: 除法运算符: 153

Operator Precedence 运算符优先级 154

Precedence and the Order of Evaluation 优先级和求值顺序 156

Some Additional Operators 其他运算符 157

The sizeof Operator and the size_t Type sizeof运算符和size_t类型 158

Modulus Operator: % 求模运算符:% 159

Increment and Decrement Operators: ++ and — 递增和递减运算符:++和– 160

Decrementing: — 递减运算符:– 164

Precedence 优先级 165

Don’t Be Too Clever 不要自作聪明 166

Expressions and Statements 表达式和语句 167

Expressions 表达式 167

Statements 语句 168

Compound Statements (Blocks) 复合语句(块) 171

Type Conversions 类型转换 174

The Cast Operator 强制类型转换运算符 176

Function with Arguments 带参数的函数 177

A Sample Program 示例程序 180

Key Concepts 关键概念 182

Summary 本章小结 182

Review Questions 复习题 183

Programming Exercises 编程练习 187

6 C Control Statements: Looping 189

第6章 C控制语句:循环

Revisiting the while Loop 再探while循环 190

Program Comments 程序注释 191

C-Style Reading Loop C风格读取循环 192

The while Statement while语句 193

Terminating a while Loop 终止while循环 194

When a Loop Terminates 何时终止循环 194

while: An Entry-Condition Loop while:入口条件循环 195

Syntax Points 语法要点 195

Which Is Bigger: Using Relational Operators and Expressions 用关系运算符和表达式比较大小 197

What Is Truth 什么是真 199

What Else Is True 其他真值 200

Troubles with Truth 真值的问题 201

The New _Bool Type 新的_Bool类型 203

Precedence of Relational Operators 优先级和关系运算符 205

Indefinite Loops and Counting Loops 不确定循环和计数循环 207

The for Loop for循环 208

Using for for Flexibility 利用for的灵活性 210

More Assignment Operators: +=, -=, 最=, =, %= 其他赋值运算符:+=、-=、最=、 =、%= 215

The Comma Operator 逗号运算符 215

Zeno Meets the for Loop 当Zeno遇到for循环 218

An Exit-Condition Loop: do while 出口条件循环:do while 220

Which Loop 如何选择循环 223

Nested Loops 嵌套循环 224

Program Discussion 程序分析 225

A Nested Variation 嵌套变式 225

Introducing Arrays 数组简介 226

Using a for Loop with an Array 在for循环中使用数组 228

A Loop Example Using a Function Return Value 使用函数返回值的循环示例 230

Program Discussion 程序分析 232

Using Functions with Return Values 使用带返回值的函数 233

Key Concepts 关键概念 234

Summary 本章小结 235

Review Questions 复习题 236

Programming Exercises 编程练习 241

7 C Control Statements: Branching and Jumps 245

第7章 C控制语句:分支和跳转

The if Statement if语句 246

Adding else to the if Statement if else语句 248

Another Example: Introducing getchar() and putchar() 另一个示例:介绍getchar()和putchar() 250

The ctype.h Family of Character Functions ctype.h系列的字符函数 252

Multiple Choice else if 多重选择else if 254

Pairing else with if else与if配对 257

More Nested ifs 多层嵌套的if语句 259

Let’s Get Logical 逻辑运算符 263

Alternate Spellings: The iso646.h Header File 备选拼写:iso646.h头文件 265

Precedence 优先级 265

Order of Evaluation 求值顺序 266

Ranges 范围 267

A Word-Count Program 一个统计单词的程序 268

The Conditional Operator: : 条件运算符: : 271

Loop Aids: continue and break 循环辅助:continue和break 274

The continue Statement continue语句 274

The break Statement break语句 277

Multiple Choice: switch and break 多重选择:switch和break 280

Using the switch Statement switch语句 281

Reading Only the First Character of a Line 只读每行的首字符 283

Multiple Labels 多重标签 284

switch and if else switch和if else 286

The goto Statement goto语句 287

Avoiding goto 避免使用goto 287

Key Concepts 关键概念 291

Summary 本章小结 291

Review Questions 复习题 292

Programming Exercises 编程练习 296

8 Character Input Output and Input Validation 299

第8章 字符输入 输出和输入验证

Single-Character I O: getchar() and putchar()

单字符I O:getchar()和putchar() 300

Buffers 缓冲区 301

Terminating Keyboard Input 结束键盘输入 302

Files, Streams, and Keyboard Input 文件、流和键盘输入 303

The End of File 文件结尾 304

Redirection and Files 重定向和文件 307

Unix, Linux, and Windows Command Prompt Redirection Unix、Linux和DOS重定向 307

Creating a Friendlier User Interface 创建更友好的用户界面 312

Working with Buffered Input 使用缓冲输入 312

Mixing Numeric and Character Input 混合数值和字符输入 314

Input Validation 输入验证 317

Analyzing the Program 分析程序 322

The Input Stream and Numbers 输入流和数字 323

Menu Browsing 菜单浏览 324

Tasks 任务 324

Toward a Smoother Execution 使执行更顺利 325

Mixing Character and Numeric Input 混合字符和数值输入 327

Key Concepts 关键概念 330

Summary 本章小结 331

Review Questions 复习题 331

Programming Exercises 编程练习 332

9 Functions 335

第9章 函数

Reviewing Functions 复习函数 335

Creating and Using a Simple Function 创建并使用简单函数 337

Analyzing the Program 分析程序 338

Function Arguments 函数参数 340

Defining a Function with an Argument: Formal Parameters 定义带形式参数的函数 342

Prototyping a Function with Arguments 声明带形式参数函数的原型 343

Calling a Function with an Argument: Actual Arguments 调用带实际参数的函数 343

The Black-Box Viewpoint 黑盒视角 345

Returning a Value from a Function with return 使用return从函数中返回值 345

Function Types 函数类型 348

ANSI C Function Prototyping ANSI C函数原型 349

The Problem 问题所在 350

The ANSI C Solution ANSI的解决方案 351

No Arguments and Unspecified Arguments 无参数和未指定参数 352

Hooray for Prototypes 函数原型的优点 353

Recursion 递归 353

Recursion Revealed 演示递归 354

Recursion Fundamentals 递归的基本原理 355

Tail Recursion 尾递归 356

Recursion and Reversal 递归和倒序计算 358

Recursion Pros and Cons 递归的优缺点 360

Compiling Programs with Two or More Source Code Files

编译多源代码文件的程序 361

Unix Unix 362

Linux Linux 362

DOS Command-Line Compilers DOS命令行编译器 362

Windows and Apple IDE Compilers Windows和苹果的IDE编译器 362

Using Header Files 使用头文件 363

Finding Addresses: The & Operator 查找地址:&运算符 367

Altering Variables in the Calling Function 更改主调函数中的变量 369

Pointers: A First Look 指针简介 371

The Indirection Operator: 最 间接运算符:最 371

Declaring Pointers 声明指针 372

Using Pointers to Communicate Between Functions 使用指针在函数间通信 373

Key Concepts 关键概念 378

Summary 本章小结 378

Review Questions 复习题 379

Programming Exercises 编程练习 380

10 Arrays and Pointers 383

第 10章 数组和指针

Arrays 数组 383

Initialization 初始化数组 384

Designated Initializers (C99) 指定初始化器(C99) 388

Assigning Array Values 给数组元素赋值 390

Array Bounds 数组边界 390

Specifying an Array Size 指定数组的大小 392

Multidimensional Arrays 多维数组 393

Initializing a Two-Dimensional Array 初始化二维数组 397

More Dimensions 其他多维数组 398

Pointers and Arrays 指针和数组 398

Functions, Arrays, and Pointers 函数、数组和指针 401

Using Pointer Parameters 使用指针形参 404

Comment: Pointers and Arrays 指针表示法和数组表示法 407

Pointer Operations 指针操作 407

Protecting Array Contents 保护数组中的数据 412

Using const with Formal Parameters 对形式参数使用const 413

More About const const的其他内容 415

Pointers and Multidimensional Arrays 指针和多维数组 417

Pointers to Multidimensional Arrays 指向多维数组的指针 420

Pointer Compatibility 指针的兼容性 421

Functions and Multidimensional Arrays 函数和多维数组 423

Variable-Length Arrays (VLAs) 变长数组(VLA) 427

Compound Literals 复合字面量 431

Key Concepts 关键概念 434

Summary 本章小结 435

Review Questions 复习题 436

Programming Exercises 编程练习 439

11 Character Strings and String Functions 441

第 11章 字符串和字符串函数

Representing Strings and String I O 表示字符串和字符串I O 441

Defining Strings Within a Program 在程序中定义字符串 442

Pointers and Strings 指针和字符串 451

String Input 字符串输入 453

Creating Space 分配空间 453

The Unfortunate gets() Function 不幸的gets()函数 453

The Alternatives to gets() gets()的替代品 455

The scanf() Function scanf()函数 462

String Output 字符串输出 464

The puts() Function puts()函数 464

The fputs() Function fputs()函数 465

The printf() Function printf()函数 466

The Do-It-Yourself Option 自定义输入 输出函数 466

String Functions 字符串函数 469

The strlen() Function strlen()函数 469

The strcat() Function strcat()函数 471

The strncat() Function strncat()函数 473

The strcmp() Function strcmp()函数 475

The strcpy() and strncpy() Functions strcpy()和strncpy()函数 482

The sprintf() Function sprintf()函数 487

Other String Functions 其他字符串函数 489

A String Example: Sorting Strings 字符串示例:字符串排序 491

Sorting Pointers Instead of Strings 排序指针而非字符串 493

The Selection Sort Algorithm 选择排序算法 494

The ctype.h Character Functions and Strings ctype.h字符函数和字符串 495

Command-Line Arguments 命令行参数 497

Command-Line Arguments in Integrated Environments 集成环境中的命令行参数 500

Command-Line Arguments with the Macintosh Macintosh中的命令行参数 500

String-to-Number Conversions 把字符串转换为数字 500

Key Concepts 关键概念 504

Summary 本章小结 504

Review Questions 复习题 505

Programming Exercises 编程练习 508

12 Storage Classes, Linkage, and Memory Management 511

第 12章 存储类别、链接和内存管理

Storage Classes 存储类别 511

Scope 作用域 513

Linkage 链接 515

Storage Duration 存储期 516

Automatic Variables 自动变量 518

Register Variables 寄存器变量 522

Static Variables with Block Scope 块作用域的静态变量 522

Static Variables with External Linkage 外部链接的静态变量 524

Static Variables with Internal Linkage 内部链接的静态变量 529

Multiple Files 多文件 530

Storage-Class Specifier Roundup 存储类别说明符 530

Storage Classes and Functions 存储类别和函数 533

Which Storage Class 存储类别的选择 534

A Random-Number Function and a Static Variable 随机数函数和静态变量 534

Roll’Em 掷骰子 538

Allocated Memory: malloc() and free() 分配内存:malloc()和free() 543

The Importance of free() free()的重要性 547

The calloc() Function calloc()函数 548

Dynamic Memory Allocation and Variable-Length Arrays 动态内存分配和变长数组 548

Storage Classes and Dynamic Memory Allocation 存储类别和动态内存分配 549

ANSI C Type Qualifiers ANSI C类型限定符 551

The const Type Qualifier const类型限定符 552

The volatile Type Qualifier volatile类型限定符 554

The restrict Type Qualifier restrict类型限定符 555

The _Atomic Type Qualifier (C11) _Atomic类型限定符(C11) 556

New Places for Old Keywords 旧关键字的新位置 557

Key Concepts 关键概念 558

Summary 本章小结 558

Review Questions 复习题 559

Programming Exercises 编程练习 561

13 File Input Output 565

第 13章 文件输入 输出

Communicating with Files 与文件进行通信 565

What Is a File 文件是什么 566

The Text Mode and the Binary Mode 文本模式和二进制模式 566

Levels of I O I O的级别 568

Standard Files 标准文件 568

Standard I O 标准I O 568

Checking for Command-Line Arguments 检查命令行参数 569

The fopen() Function fopen()函数 570

The getc() and putc() Functions getc()和putc()函数 572

End-of-File 文件结尾 572

The fclose() Function fclose()函数 574

Pointers to the Standard Files 指向标准文件的指针 574

A Simple-Minded File-Condensing Program 一个简单的文件压缩程序 574

File I O: fprintf(), fscanf(), fgets(), and fputs()

文件I O:fprintf()、fscanf()、fgets()和fputs() 576

The fprintf() and fscanf() Functions fprintf()和fscanf()函数 576

The fgets() and fputs() Functions fgets()和fputs()函数 578

Adventures in Random Access: fseek() and ftell()

随机访问:fseek()和ftell() 579

How fseek() and ftell() Work fseek()和ftell()的工作原理 580

Binary Versus Text Mode 二进制模式和文本模式 582

Portability 可移植性 582

The fgetpos() and fsetpos() Functions fgetpos()和fsetpos()函数 583

Behind the Scenes with Standard I O 标准I O的机理 583

Other Standard I O Functions 其他标准I O函数 584

The int ungetc(int c, FILE 最fp) Function int ungetc(int c, FILE 最fp)函数 585

The int fflush() Function int fflush()函数 585

The int setvbuf() Function int setvbuf()函数 585

Binary I O: fread() and fwrite() 二进制I O:fread()和fwrite() 586

The size_t fwrite() Function size_t fwrite()函数 588

The size_t fread() Function size_t fread()函数 588

The int feof(FILE 最fp) and int ferror(FILE 最fp) Functions

int feof(FILE 最fp)和int ferror(FILE 最fp)函数 589

An fread() and fwrite() Example 一个程序示例 589

Random Access with Binary I O 用二进制I O进行随机访问 593

Key Concepts 关键概念 594

Summary 本章小结 595

Review Questions 复习题 596

Programming Exercises 编程练习 598

14 Structures and Other Data Forms 601

第 14章 结构和其他数据形式

Sample Problem: Creating an Inventory of Books 示例问题:创建图书目录 601

Setting Up the Structure Declaration 建立结构声明 604

Defining a Structure Variable 定义结构变量 604

Initializing a Structure 初始化结构 606

Gaining Access to Structure Members 访问结构成员 607

Initializers for Structures 结构的初始化器 607

Arrays of Structures 结构数组 608

Declaring an Array of Structures 声明结构数组 611

Identifying Members of an Array of Structures 标识结构数组的成员 612

Program Discussion 程序讨论 612

Nested Structures 嵌套结构 613

Pointers to Structures 指向结构的指针 615

Declaring and Initializing a Structure Pointer 声明和初始化结构指针 617

Member Access by Pointer 用指针访问成员 617

Telling Functions About Structures 向函数传递结构的信息 618

Passing Structure Members 传递结构成员 618

Using the Structure Address 传递结构的地址 619

Passing a Structure as an Argument 传递结构 621

More on Structure Features 其他结构特性 622

Structures or Pointer to Structures 结构和结构指针的选择 626

Character Arrays or Character Pointers in a Structure

结构中的字符数组和字符指针 627

Structure, Pointers, and malloc() 结构、指针和malloc() 628

Compound Literals and Structures (C99) 复合字面量和结构(C99) 631

Flexible Array Members (C99) 伸缩型数组成员(C99) 633

Anonymous Structures (C11) 匿名结构(C11) 636

Functions Using an Array of Structures 使用结构数组的函数 637

Saving the Structure Contents in a File 把结构内容保存到文件中 639

A Structure-Saving Example 保存结构的程序示例 640

Program Points 程序要点 643

Structures: What Next 链式结构 644

Unions: A Quick Look 联合简介 645

Using Unions 使用联合 646

Anonymous Unions (C11) 匿名联合(C11) 647

Enumerated Types 枚举类型 649

enum Constants enum常量 649

Default Values 默认值 650

Assigned Values 赋值 650

enum Usage enum的用法 650

Shared Namespaces 共享名称空间 652

typedef: A Quick Look typedef简介 653

Fancy Declarations 其他复杂的声明 655

Functions and Pointers 函数和指针 657

Key Concepts 关键概念 665

Summary 本章小结 665

Review Questions 复习题 666

Programming Exercises 编程练习 669

15 Bit Fiddling 673

第 15章 位操作

Binary Numbers, Bits, and Bytes 二进制数、位和字节 674

Binary Integers 二进制整数 674

Signed Integers 有符号整数 675

Binary Floating Point 二进制浮点数 676

Other Number Bases 其他进制数 676

Octal 八进制 677

Hexadecimal 十六进制 677

C’s Bitwise Operators C按位运算符 678

Bitwise Logical Operators 按位逻辑运算符 678

Usage: Masks 用法:掩码 680

Usage: Turning Bits On (Setting Bits) 用法:打开位(设置位) 681

Usage: Turning Bits Off (Clearing Bits) 用法:关闭位(清空位) 682

Usage: Toggling Bits 用法:切换位 683

Usage: Checking the Value of a Bit 用法:检查位的值 683

Bitwise Shift Operators 移位运算符 684

Programming Example 编程示例 685

Another Example 另一个例子 688

Bit Fields 位字段 690

Bit-Field Example 位字段示例 692

Bit Fields and Bitwise Operators 位字段和按位运算符 696

Alignment Features (C11) 对齐特性(C11) 703

Key Concepts 关键概念 705

Summary 本章小结 706

Review Questions 复习题 706

Programming Exercises 编程练习 708

16 The C Preprocessor and the C Library 711

第 16章 C预处理器和C库

First Steps in Translating a Program 翻译程序的第 一步 712

Manifest Constants: #define 明示常量:#define 713

Tokens 记号 717

Redefining Constants 重定义常量 717

Using Arguments with #define 在#define中使用参数 718

Creating Strings from Macro Arguments: The # Operator

用宏参数创建字符串:#运算符 721

Preprocessor Glue: The ## Operator 预处理器粘合剂:##运算符 722

Variadic Macros: ... and _ _VA_ARGS_ _ 变参宏:...和_ _VA_ARGS_ _ 723

Macro or Function 宏和函数的选择 725

File Inclusion: #include 文件包含:#include 726

Header Files: An Example 头文件示例 727

Uses for Header Files 使用头文件 729

Other Directives 其他指令 730

The #undef Directive #undef指令 731

Being Defined—The C Preprocessor Perspective 从C预处理器角度看已定义 731

Conditional Compilation 条件编译 731

Predefined Macros 预定义宏 737

#line and #error #line和#error 738

#pragma #pragma 739

Generic Selection (C11) 泛型选择(C11) 740

Inline Functions (C99) 内联函数(C99) 741

_Noreturn Functions (C11) _Noreturn函数(C11) 744

The C Library C库 744

Gaining Access to the C Library 访问C库 745

Using the Library Descriptions 使用库描述 746

The Math Library 数学库 747

A Little Trigonometry 三角问题 748

Type Variants 类型变体 750

The tgmath.h Library (C99) tgmath.h库(C99) 752

The General Utilities Library 通用工具库 753

The exit() and atexit() Functions exit()和atexit()函数 753

The qsort() Function qsort()函数 755

The Assert Library 断言库 760

Using assert assert的用法 760

_Static_assert (C11) _Static_assert(C11) 762

memcpy() and memmove() from the string.h Library

string.h库中的memcpy()和memmove() 763

Variable Arguments: stdarg.h 可变参数:stdarg.h 765

Key Concepts 关键概念 768

Summary 本章小结 768

Review Questions 复习题 768

Programming Exercises 编程练习 770

17 Advanced Data Representation 773

第 17章 高 级数据表示

Exploring Data Representation 研究数据表示 774

Beyond the Array to the Linked List 从数组到链表 777

Using a Linked List 使用链表 781

Afterthoughts 反思 786

Abstract Data Types (ADTs) 抽象数据类型(ADT) 786

Getting Abstract 建立抽象 788

Building an Interface 建立接口 789

Using the Interface 使用接口 793

Implementing the Interface 实现接口 796

Getting Queued with an ADT 队列ADT 804

Defining the Queue Abstract Data Type 定义队列抽象数据类型 804

Defining an Interface 定义一个接口 805

Implementing the Interface Data Representation 实现接口数据表示 806

Testing the Queue 测试队列 815

Simulating with a Queue 用队列进行模拟 818

The Linked List Versus the Array 链表和数组 824

Binary Search Trees 二叉查找树 828

A Binary Tree ADT 二叉树ADT 829

The Binary Search Tree Interface 二叉查找树接口 830

The Binary Tree Implementation 二叉树的实现 833

Trying the Tree 使用二叉树 849

Tree Thoughts 树的思想 854

Other Directions 其他说明 856

Key Concepts 关键概念 856

Summary 本章小结 857

Review Questions 复习题 857

Programming Exercises 编程练习 858

A Answers to the Review Questions 861

附录A 复习题答案

Answers to Review Questions for Chapter 1 第 1章复习题答案 861

Answers to Review Questions for Chapter 2 第 2章复习题答案 862

Answers to Review Questions for Chapter 3 第3章复习题答案 863

Answers to Review Questions for Chapter 4 第4章复习题答案 866

Answers to Review Questions for Chapter 5 第5章复习题答案 869

Answers to Review Questions for Chapter 6 第6章复习题答案 872

Answers to Review Questions for Chapter 7 第7章复习题答案 876

Answers to Review Questions for Chapter 8 第8章复习题答案 879

Answers to Review Questions for Chapter 9 第9章复习题答案 881

Answers to Review Questions for Chapter 10 第 10章复习题答案 883

Answers to Review Questions for Chapter 11 第 11章复习题答案 886

Answers to Review Questions for Chapter 12 第 12章复习题答案 890

Answers to Review Questions for Chapter 13 第 13章复习题答案 891

Answers to Review Questions for Chapter 14 第 14章复习题答案 894

Answers to Review Questions for Chapter 15 第 15章复习题答案 898

Answers to Review Questions for Chapter 16 第 16章复习题答案 899

Answers to Review Questions for Chapter 17 第 17章复习题答案 901

B Reference Section 905

附录B 参考资料

Section Ⅰ: Additional Reading 参考资料Ⅰ:补充阅读 905

Online Resources 在线资源 905

C Language Books C语言书籍 907

Programming Books 编程书籍 907

Reference Books 参考书籍 908

C++ Books C++书籍 908

Section Ⅱ: C Operators 参考资料Ⅱ:C运算符 908

Arithmetic Operators 算术运算符 909

Relational Operators 关系运算符 910

Assignment Operators 赋值运算符 910

Logical Operators 逻辑运算符 911

The Conditional Operator 条件运算符 911

Pointer-Related Operators 与指针有关的运算符 912

Sign Operators 符号运算符 912

Structure and Union Operators 结构和联合运算符 912

Bitwise Operators 按位运算符 913

Miscellaneous Operators 混合运算符 914

Section Ⅲ: Basic Types and Storage Classes

参考资料Ⅲ:基本类型和存储类别 915

Summary: The Basic Data Types 总结:基本数据类型 915

Summary: How to Declare a Simple Variable 总结:如何声明一个简单变量 917

Summary: Qualifiers 总结:限定符 919

Section Ⅳ: Expressions, Statements, and Program Flow

参考资料Ⅳ:表达式、语句和程序流 920

Summary: Expressions and Statements 总结:表达式和语句 920

Summary: The while Statement 总结:while语句 921

Summary: The for Statement 总结:for语句 921

Summary: The do while Statement 总结:do while语句 922

Summary: Using if Statements for Making Choices 总结:if语句 923

Summary: Multiple Choice with switch 带多重选择的switch语句 924

Summary: Program Jumps 总结:程序跳转 925

Section Ⅴ: The Standard ANSI C Library with C99 and C11 Additions

参考资料Ⅴ:新增C99和C11的ANSI C库 926

Diagnostics: assert.h 断言:assert.h 926

Complex Numbers: complex.h (C99) 复数:complex.h(C99) 927

Character Handling: ctype.h 字符处理:ctype.h 929

Error Reporting: errno.h 错误报告:errno.h 930

Floating-Point Environment: fenv.h (C99) 浮点环境:fenv.h(C99) 930

Floating-point Characteristics: float.h 浮点特性:float.h 933

Format Conversion of Integer Types: inttypes.h (C99) 整数类型的格式转换:inttypes.h 935

Alternative Spellings: iso646.h 可选拼写:iso646.h 936

Localization: locale.h 本地化:locale.h 936

Math Library: math.h 数学库:math.h 939

Non-Local Jumps: setjmp.h 非本地跳转:setjmp.h 945

Signal Handling: signal.h 信号处理:signal.h 945

Alignment: stdalign.h (C11) 对齐:stdalign.h(C11) 946

Variable Arguments: stdarg.h 可变参数:stdarg.h 947

Atomics Support: stdatomic.h (C11) 原子支持:stdatomic.h(C11) 948

Boolean Support: stdbool.h (C99) 布尔支持:stdbool.h(C99) 948

Common Definitions: stddef.h 通用定义:stddef.h 948

Integer Types: stdint.h 整数类型:stdint.h 949

Standard I O Library: stdio.h 标准I O库:stdio.h 953

General Utilities: stdlib.h 通用工具:stdlib.h 956

_Noreturn: stdnoreturn.h _Noreturn:stdnoreturn.h 962

String Handling: string.h 处理字符串:string.h 962

Type-Generic Math: tgmath.h (C99) 通用类型数学:tgmath.h(C99) 965

Threads: threads.h (C11) 线程:threads.h(C11) 967

Date and Time: time.h 日期和时间:time.h 967

Unicode Utilities: uchar.h (C11) 统一码工具:uchar.h(C11) 971

Extended Multibyte and Wide-Character Utilities: wchar.h (C99)

扩展的多字节字符和宽字符工具:wchar.h(C99) 972

Wide Character Classification and Mapping Utilities: wctype.h (C99)

宽字符分类和映射工具:wctype.h(C99) 978

Section Ⅵ: Extended Integer Types 参考资料Ⅵ:扩展的整数类型 980

Exact-Width Types 精 确宽度类型 981

Minimum-Width Types 第一小宽度类型 982

Fastest Minimum-Width Types 第一快第一小宽度类型 983

Maximum-Width Types 第一大宽度类型 983

Integers That Can Hold Pointer Values 可储存指针值的整型 984

Extended Integer Constants 扩展的整型常量 984

Section Ⅶ: Expanded Character Support 参考资料Ⅶ:扩展字符支持 984

Trigraph Sequences 三字符序列 984

Digraphs 双字符 985

Alternative Spellings: iso646.h 可选拼写:iso646.h 986

Multibyte Characters 多字节字符 986

Universal Character Names (UCNs) 通用字符名(UCN) 987

Wide Characters 宽字符 988

Wide Characters and Multibyte Characters 宽字符和多字节字符 989

Section Ⅷ: C99 C11 Numeric Computational Enhancements

参考资料Ⅷ:C99 C11数值计算增强 990

The IEC Floating-Point Standard IEC浮点标准 990

The fenv.h Header File fenv.h头文件 994

The STDC FP_CONTRACT Pragma STDC FP_CONTRACT编译指示 995

Additions to the math.h Library math.h库增补 995

Support for Complex Numbers 对复数的支持 996

Section Ⅸ: Differences Between C and C++ 参考资料Ⅸ:C和C++的区别 998

Function Prototypes 函数原型 999

char Constants char常量 1000

The const Modifier const限定符 1000

Structures and Unions 结构和联合 1001

Enumerations 枚举 1002

Pointer-to-void 指向void的指针 1002

Boolean Types 布尔类型 1003

Alternative Spellings 可选拼写 1003

Wide-Character Support 宽字符支持 1003

Complex Types 复数类型 1003

Inline Functions 内联函数 1003

C99 11 Features Not Found in C++11 C++11中没有的C99 C11特性 1004

下载地址

立即下载

(解压密码:www.teccses.org)

Article Title:《C Primer Plus 第6版 英文版 上下册》
Article link:https://www.teccses.org/1284425.html