公告:欢迎来到极梦小屋!本站资源全部可以免费下载,积分都是可以免费获取的!

《C Primer Plus 第五版》PDF 中文版

本书全面讲述了C语言编程的相关概念和知识。

全书共17章。第1、2章学习C语言编程所需的预备知识,第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。本书适合希望系统学习C语言的读者,也适用于精通其他编程语言并希望进一步掌握和巩固C编程技术的程序员。

目录

第1章概览1
1.1C语言的起源1
1.2使用C语言的理由1
1.2.1设计特性1
1.2.2高效性2
1.2.3可移植性2
1.2.4强大的功能和灵活性2
1.2.5面向编程人员3
1.2.6缺点3
1.3C语言的发展方向3
1.4计算机工作的基本原理4
1.5高级计算机语言和编译器4
1.6使用C语言的7个步骤5
1.6.1第1步:定义程序目标5
1.6.2第2步:设计程序6
1.6.3第3步:编写代码6
1.6.4第4步:编译6
1.6.5第5步:运行程序6
1.6.6第6步:测试和调试程序7
1.6.7第7步:维护和修改程序7
1.6.8总结7
1.7编程机制7
1.7.1目标代码文件、可执行文件和库8
1.7.2UNIX系统9
1.7.3Linux系统10
1.7.4集成开发环境(Windows系统下)10
1.7.5IBM PC的DOS编译器11
1.7.6Macintosh上的C11
1.8语言标准11
1.8.1第1个ANSI/ISO C标准12
1.8.2C99标准12
1.9本书的组织结构12
1.10本书体例13
1.10.1字体13
1.10.2屏幕输出13
1.11总结14
1.12复习题14
1.13编程练习14
 
第2章C语言概述15
2.1C语言的一个简单实例15
2.2实例说明16
2.2.1第一遍快速简介16
2.2.2第二遍程序细节17
2.3一个简单程序的结构22
2.4使程序可读的技巧23
2.5更进一步24
2.5.1说明24
2.5.2多个声明24
2.5.3乘法24
2.5.4输出多个值25
2.6多个函数25
2.7调试26
2.7.1语法错误26
2.7.2语义错误27
2.7.3程序状态28
2.8关键字和保留标识符28
2.9关键概念29
2.10总结29
2.11复习题30
2.12编程练习31
 
第3章数据和C32
3.1示例程序32
3.2变量与常量数据34
3.3数据:数据类型关键字34
3.3.1整数类型与浮点数类型35
3.3.2整数35
3.3.3浮点数36
3.4C数据类型36
3.4.1int类型36
3.4.2其他整数类型39
3.4.3使用字符:char类型42
3.4.4_Bool类型46
3.4.5可移植的类型:inttypes.h46
3.4.6float、double和long double类型47
3.4.7复数和虚数类型50
3.4.8其他类型50
3.4.9类型大小52
3.5使用数据类型53
3.6参数和易犯的错误54
3.7另一个例子:转义序列55
3.7.1过程分析55
3.7.2刷新输出56
3.8关键概念56
3.9总结56
3.10复习题57
3.11编程练习58
 
第4章字符串和格式化输入/输出60
4.1前导程序60
4.2字符串简介61
4.2.1char数组类型和空字符61
4.2.2使用字符串62
4.2.3strlen()函数63
4.3常量和C预处理器64
4.3.1const修饰符66
4.3.2系统定义的明显常量66
4.4研究和利用printf()和scanf()67
4.4.1printf()函数68
4.4.2使用printf()68
4.4.3printf()的转换说明修饰符70
4.4.4转换说明的意义73
4.4.5使用scanf()78
4.4.6printf()和scanf()的*修饰符81
4.4.7printf的用法提示82
4.5关键概念83
4.6总结83
4.7复习题84
4.8编程练习85
 
第5章运算符、表达式和语句87
5.1循环简介87
5.2基本运算符89
5.2.1赋值运算符:=89
5.2.2加法运算符:+90
5.2.3减法运算符:-90
5.2.4符号运算符:-和+90
5.2.5乘法运算符:*91
5.2.6除法运算符:/92
5.2.7运算符的优先级93
5.2.8优先级和求值顺序94
5.3其他运算符95
5.3.1sizeof运算符和size_t类型95
5.3.2取模运算符:%96
5.3.3增量和减量运算符:++和--97
5.3.4减量:--100
5.3.5优先级100
5.3.6不要太聪明101
5.4表达式和语句102
5.4.1表达式102
5.4.2语句102
5.4.3复合语句(代码块)104
5.5类型转换105
5.6带有参数的函数107
5.7一个示例程序109
5.8关键概念110
5.9总结110
5.10复习题111
5.11编程练习113
 
第6章C控制语句:循环115
6.1再探while循环115
6.1.1程序注解116
6.1.2C风格的读循环117
6.2while语句118
6.2.1终止while循环118
6.2.2循环何时终止118
6.2.3while:入口条件循环119
6.2.4语法要点119
6.3比较大小:使用关系运算符和表达式120
6.3.1什么是真122
6.3.2还有什么是真122
6.3.3真值的问题123
6.3.4新的_Bool类型124
6.3.5关系运算符的优先级125
6.4不确定循环与计数循环127
6.5for循环128
6.6更多赋值运算符:+=、-=、*=、/=和%=132
6.7逗号运算符133
6.8退出条件循环:do while136
6.9选择哪种循环138
6.10嵌套循环138
6.10.1程序讨论139
6.10.2嵌套变化139
6.11数组140
6.12使用函数返回值的循环例子142
6.12.1程序讨论144
6.12.2使用具有返回值的函数144
6.13关键概念145
6.14总结145
6.15复习题146
6.16编程练习149
 
第7章C控制语句:分支和跳转152
7.1if语句152
7.2在if语句中添加else关键字154
7.2.1另一个例子:介绍getchar()和putchar()155
7.2.2ctype.h系列字符函数157
7.2.3多重选择else if158
7.2.4把else与if配对160
7.2.5多层嵌套的if161
7.3获得逻辑性164
7.3.1改变拼写法:iso646.h头文件166
7.3.2优先级166
7.3.3求值的顺序166
7.3.4范围167
7.4一个统计字数的程序168
7.5条件运算符?:170
7.6循环辅助手段:continue和break172
7.6.1continue语句172
7.6.2break语句174
7.7多重选择:switch和break175
7.7.1使用switch语句177
7.7.2只读取一行的首字符178
7.7.3多重标签178
7.7.4switch和if else180
7.8goto语句180
7.9关键概念183
7.10总结183
7.11复习题184
7.12编程练习186
 
第8章字符输入/输出和输入确认188
8.1单字符I/O:getchar()和putchar()188
8.2缓冲区189
8.3终止键盘输入190
8.3.1文件、流和键盘输入190
8.3.2文件结尾191
8.4重定向和文件192
8.5创建一个更友好的用户界面196
8.5.1使用缓冲输入196
8.5.2混合输入数字和字符198
8.6输入确认200
8.6.1分析程序203
8.6.2输入流和数值204
8.7菜单浏览204
8.7.1任务205
8.7.2使执行更顺利205
8.7.3混合字符和数值输入207
8.8关键概念209
8.9总结209
8.10复习题210
8.11编程练习210
 
第9章函数212
9.1函数概述212
9.1.1编写和使用一个简单的函数213
9.1.2程序分析214
9.1.3函数参数215
9.1.4定义带有参数的函数:形式参量216
9.1.5带参数函数的原型声明217
9.1.6调用带有参数的函数:实际参数217
9.1.7黑盒子观点218
9.1.8使用return从函数中返回一个值218
9.1.9函数类型221
9.2ANSI C的函数原型221
9.2.1产生的问题222
9.2.2ANSI的解决方案222
9.2.3无参数和不确定参数224
9.2.4函数原型的优点224
9.3递归224
9.3.1递归的使用224
9.3.2递归的基本原理226
9.3.3尾递归226
9.3.4递归和反向计算228
9.3.5递归的优缺点229
9.4多源代码文件程序的编译230
9.4.1UNIX230
9.4.2Linux230
9.4.3DOS命令行编译器230
9.4.4Windows和Macintosh编译器230
9.4.5头文件的使用231
9.5地址运算符:&233
9.6改变调用函数中的变量235
9.7指针简介236
9.7.1间接运算符:*237
9.7.2指针声明237
9.7.3使用指针在函数间通信238
9.8关键概念241
9.9总结242
9.10复习题242
9.11编程练习243
 
第10章数组和指针244
10.1数组244
10.1.1初始化244
10.1.2指定初始化项目(C99)248
10.1.3为数组赋值249
10.1.4数组边界249
10.1.5指定数组大小250
10.2多维数组251
10.2.1初始化二维数组253
10.2.2更多维数的数组254
10.3指针和数组254
10.4函数、数组和指针256
10.4.1使用指针参数258
10.4.2评论:指针和数组260
10.5指针操作260
10.6保护数组内容263
10.6.1对形式参量使用const264
10.6.2有关const的其他内容265
10.7指针和多维数组267
10.7.1指向多维数组的指针268
10.7.2指针兼容性269
10.7.3函数和多维数组270
10.8变长数组(VLA)273
10.9复合文字276
10.10关键概念278
10.11总结278
10.12复习题279
10.13编程练习281
 
第11章字符串和字符串函数282
11.1字符串表示和字符串I/O282
11.1.1在程序中定义字符串283
11.1.2指针和字符串288
11.2字符串输入289
11.2.1创建存储空间289
11.2.2gets()函数289
11.2.3fgets()函数291
11.2.4scanf()函数292
11.3字符串输出293
11.3.1puts()函数293
11.3.2fputs()函数294
11.3.3printf()函数294
11.4自定义字符串输入/输出函数295
11.5字符串函数297
11.5.1strlen()函数297
11.5.2strcat()函数298
11.5.3strncat()函数299
11.5.4strcmp()函数299
11.5.5strncmp()变种303
11.5.6strcpy()和strncpy()函数303
11.5.7sprintf()函数307
11.5.8其他字符串函数307
11.6字符串例子:字符串排序309
11.6.1排序指针而不是字符串310
11.6.2选择排序算法310
11.7ctype.h字符函数和字符串311
11.8命令行参数312
11.8.1集成环境下的命令行参数314
11.8.2Macintosh的命令行参数314
11.9把字符串转换为数字314
11.10关键概念316
11.11总结316
11.12复习题317
11.13编程练习319
 
第12章存储类、链接和内存管理321
12.1存储类321
12.1.1作用域321
12.1.2链接323
12.1.3存储时期323
12.1.4自动变量324
12.1.5寄存器变量326
12.1.6具有代码块作用域的静态变量327
12.1.7具有外部链接的静态变量328
12.1.8具有内部链接的静态变量331
12.1.9多文件332
12.2存储类说明符332
12.3存储类和函数334
12.4随机数函数和静态变量335
12.5掷骰子337
12.6分配内存:malloc()和free()340
12.6.1free()的重要性343
12.6.2函数calloc()343
12.6.3动态内存分配与变长数组344
12.6.4存储类与动态内存分配344
12.7ANSI C的类型限定词345
12.7.1类型限定词const345
12.7.2类型限定词volatile347
12.7.3类型限定词restrict347
12.7.4旧关键字的新位置348
12.8关键概念348
12.9总结349
12.10复习题350
12.11编程练习351
 
第13章文件输入/输出354
13.1和文件进行通信354
13.1.1文件是什么354
13.1.2文本视图和二进制视图355
13.1.3I/O级别355
13.1.4标准文件355
13.2标准I/O356
13.2.1检查命令行参数357
13.2.2fopen()函数357
13.2.3getc()函数和putc()函数358
13.2.4文件结尾358
13.2.5fclose()函数359
13.2.6标准文件指针359
13.3一个简单的文件压缩程序360
13.4文件I/O:fprintf()、fscanf()、fgets()和fputs()函数361
13.4.1fprintf()和fscanf()函数361
13.4.2fgets()和fputs()函数362
13.4.3注释:gets()函数和fgets()函数364
13.5随机存取:fseek()和ftell()函数364
13.5.1fseek()和ftell()如何工作365
13.5.2二进制模式和文本模式366
13.5.3可移植性366
13.5.4fgetpos()和fsetpos()函数367
13.6标准I/O内幕367
13.7其他标准I/O函数368
13.7.1int ungetc(int c,FILE * fp)函数368
13.7.2int fflush()函数368
13.7.3int setvbuf()函数368
13.7.4二进制I/O:fread()和fwrite()函数369
13.7.5size_t fwrite()函数369
13.7.6size_t fread()函数370
13.7.7int feof(FILE * fp)和int ferror(FILE * fp)函数370
13.7.8一个fread()和fwrite()的例子370
13.7.9使用二进制I/O进行随机存取372
13.8关键概念374
13.9总结374
13.10复习题375
13.11编程练习376
 
第14章结构和其他数据形式378
14.1示例问题:创建图书目录378
14.2建立结构声明379
14.3定义结构变量380
14.3.1初始化结构381
14.3.2访问结构成员381
14.3.3结构的指定初始化项目382
14.4结构数组382
14.4.1声明结构数组384
14.4.2标识结构数组的成员384
14.4.3程序讨论385
14.5嵌套结构385
14.6指向结构的指针387
14.6.1声明和初始化结构指针388
14.6.2使用指针访问成员388
14.7向函数传递结构信息389
14.7.1传递结构成员389
14.7.2使用结构地址390
14.7.3把结构作为参数传递391
14.7.4其他结构特性391
14.7.5结构,还是指向结构的指针394
14.7.6在结构中使用字符数组还是字符指针395
14.7.7结构、指针和malloc()395
14.7.8复合文字和结构(C99)397
14.7.9伸缩型数组成员(C99)398
14.7.10使用结构数组的函数400
14.8把结构内容保存到文件中401
14.8.1一个结构保存的实例402
14.8.2程序要点404
14.9结构:下一步是什么405
14.10联合简介405
14.11枚举类型407
14.11.1enum常量408
14.11.2默认值408
14.11.3指定值408
14.11.4enum用法408
14.11.5共享的名字空间410
14.12typedef简介410
14.13奇特的声明412
14.14函数和指针413
14.15关键概念418
14.16总结418
14.17复习题419
14.18编程练习421
 
第15章位操作423
15.1二进制数、位和字节423
15.1.1二进制整数424
15.1.2有符号整数424
15.1.3二进制浮点数424
15.2其他基数425
15.2.1八进制425
15.2.2十六进制425
15.3C的位运算符426
15.3.1位逻辑运算符426
15.3.2用法:掩码428
15.3.3用法:打开位428
15.3.4用法:关闭位428
15.3.5用法:转置位429
15.3.6用法:查看一位的值429
15.3.7移位运算符429
15.3.8编程实例430
15.3.9另一个实例432
15.4位字段434
15.4.1位字段实例435
15.4.2位字段和位运算符437
15.5关键概念443
15.6总结443
15.7复习题443
15.8编程练习444
 
第16章C预处理器和C库446
16.1翻译程序的第一步446
16.2明显常量:#define447
16.2.1语言符号449
16.2.2重定义常量450
16.3在#define中使用参数450
16.3.1利用宏参数创建字符串:#运算符452
16.3.2预处理器的粘合剂:##运算符453
16.3.3可变宏:...和_ _VA_ARGS_ _454
16.4宏,还是函数455
16.5文件包含:#include455
16.5.1头文件:一个实例456
16.5.2使用头文件458
16.6其他指令459
16.6.1#undef指令459
16.6.2已定义:C预处理器的观点459
16.6.3条件编译459
16.6.4预定义宏463
16.6.5#line和 #error464
16.6.6#pragma464
16.7内联函数465
16.8C库467
16.8.1访问C库467
16.8.2参考库描述467
16.9数学库468
16.10通用工具库471
16.10.1exit()和atexit()函数471
16.10.2qsort()函数472
16.11诊断库476
16.12string.h库中的memcpy()和memmove()477
16.13可变参数:stdarg.h478
16.14关键概念480
16.15总结481
16.16复习题481
16.17编程练习482
 
第17章高级数据表示484
17.1研究数据表示484
17.2从数组到链表486
17.2.1使用链表488
17.2.2反思491
17.3抽象数据类型(ADT)492
17.3.1变得抽象492
17.3.2构造接口493
17.3.3使用接口496
17.3.4实现接口498
17.4队列ADT504
17.4.1定义队列抽象数据类型504
17.4.2定义接口504
17.4.3实现接口的数据表示505
17.4.4测试队列511
17.5用队列进行模拟513
17.6链表与数组517
17.7二叉搜索树519
17.7.1二叉树ADT520
17.7.2二叉搜索树的接口520
17.7.3二叉树的实现522
17.7.4试用树533
17.7.5树的思想536
17.8其他说明537
17.9关键概念537
17.10总结538
17.11复习题538
17.12编程练习538
 
附录A复习题答案540
 
附录B参考资料570
B.1参考资料1:参阅书籍570
B.2参考资料2:C运算符572
B.3参考资料3:基本类型和存储类576
B.4参考资料4:表达式、语句和程序流579
B.5参考资料5:添加了C99的标准 ANSI C库584
B.6参考资料6:扩展的整数类型614
B.7参考资料7:扩展的字符支持617
B.8参考资料8:C99的数值计算增强620
B.9参考资料9:C和C++的差别622

获取方式

编号:s0007

普通下载:https://t00y.com/file/21116974-466323234

快速下载:https://xw365.lanzoui.com/iX36yhcg8fi

给TA打赏
共{{data.count}}人
人已打赏
学习资源

百度霸屏和独家品牌打造流量训练营第13期YY课程

2020-10-11 13:29:53

学习资源

Android基础教程 PDF中文版

2020-10-12 20:49:39

个人中心
今日签到
有新私信 私信列表
搜索