出版社: 人民邮电出版社
副标题: (第五版)
译者: 云巅工作室
出版年: 2005-2-1
页数: 626
定价: 60.00元
装帧: 平装(无盘)
ISBN: 9787115130228
内容简介 · · · · · ·
《C Primer Plus(第5版)(中文版)》共17章。第1、2章学习C语言编程所需的预备知识。第3到15章介绍了C语言的相关知识,包括数据类型、格式化输入输出、运算符、表达式、流程控制语句、函数、数组和指针、字符串操作、内存管理、位操作等等,知识内容都针对C99标准;另外,第10章强化了对指针的讨论,第12章引入了动态内存分配的概念,这些内容更加适合读者的需求。第16章和第17章讨论了C预处理器和C库函数、高级数据表示(数据结构)方面的内容。附录给出了各章后面复习题、编程练习的答案和丰富的C编程参考资料。
作者简介 · · · · · ·
普拉塔,在加利福尼亚州的Kentfield的Marin学院教授天文学、物理学和程序设计课程。他在加州工业学院获得学士学位,从加州大学伯克利分校获得博士学位。他最早接触计算机,始于对星河的计算机建模。Stephen已经编写或与他人合作编写了十多本书。其中包括C++Primer Plus和Unix Prinmer Plus。
目录 · · · · · ·
1.1 C语言的起源
1.2 使用C语言的理由
1.3 C语言的发展方向
1.4 计算机工作的基本原理
1.5 高级计算机语言和编译器
1.6 使用C语言的7个步骤
1.7 编程机制
1.8 语言标准
1.9 本书的组织结构
1.10 本书体例
1.11 总结
1.12 复习题
1.13 编程练习
第2章 C语言概述
2.1 C语言的一个简单实例
2.2 实例说明
2.3 一个简单程序的结构
2.4 使程序可读的技巧
2.5 更进一步
2.6 多个函数
2.7 调试
2.8 关键字和保留标识符
2.9 关键概念
2.10 总结
2.11 复习题
2.12 编程练习
第3章 数据和C
3.1 示例程序
3.2 变量与常量数据
3.3 数据:数据类型关键字
3.4 C数据类型
3.5 使用数据类型
3.6 参数和易犯的错误
3.7 另一个例子:转义序列
3.8 关键概念
3.9 总结
3.10 复习题
3.11 编程练习
第4章 字符串和格式化输入/输出
4.1 前导程序
4.2 字符串简介
4.3 常量和C预处理器
4.4 研究和利用printf()和scanf()
4.5 关键概念
4.6 总结
4.7 复习题
4.8 编程练习
第5章 运算符、表达式和语句
5.1 循环简介
5.2 基本运算符
5.3 其他运算符
5.4 表达式和语句
5.5 类型转换
5.6 带有参数的函数
5.7 一个示例程序
5.8 关键概念
5.9 总结
5.10 复习题
5.11 编程练习
第6章 C控制语句:循环
6.1 再探while循环
6.2 while语句
6.4 不确定循环与计数循环
6.5 for循环
6.6 更多赋值运算符:+=、-=、*=、/=和%=
6.7 逗号运算符
6.8 退出条件循环:do while
6.9 选择哪种循环
6.10 嵌套循环
6.11 数组
6.12 使用函数返回值的循环例子
6.13 关键概念
6.14 总结
6.15 复习题
6.16 编程练习
第7章 C控制语句:分支和跳转
7.1 if语句
7.2 在if语句中添加else关键字
7.3 获得逻辑性
7.4 一个统计字数的程序
7.5 条件运算符?:
7.6 循环辅助手段:continue和break
7.7 多重选择:switch和break
7.8 goto语句
7.9 关键概念
7.10 总结
7.11 复习题
7.12 编程练习
第8章 字符输入/输出和输入确认
8.1 单字符I/O:getchar()和putchar()
8.2 缓冲区
8.3 终止键盘输入
8.5 创建一个更友好的用户界面
8.6 输入确认
8.7 菜单浏览
8.8 关键概念
8.9 总结
8.10 复习题
8.11 编程练习
第9章 函数
9.1 函数概述
9.2 ANSI C的函数原型
9.3 递归
9.4 多源代码文件程序的编译
9.5 地址运算符:&
9.6 改变调用函数中的变量
9.7 指针简介
9.8 关键概念
9.9 总结
9.10 复习题
9.11 编程练习
第10章 数组和指针
10.1 数组
10.2 多维数组
10.3 指针和数组
10.4 函数、数组和指针
10.5 指针操作
10.6 保护数组内容
10.7 指针和多维数组
10.8 变长数组(VLA)
10.9 复合文字
10.10 关键概念
10.11 总结
10.12 复习题
10.13 编程练习
第11章 字符串和字符串函数
11.1 字符串表示和字符串I/O
11.2 字符串输入
11.3 字符串输出
11.4 自定义字符串输入/输出函数
11.5 字符串函数
11.6 字符串例子:字符串排序
11.7 ctype.h字符函数和字符串
11.8 命令行参数
11.9 把字符串转换为数字
11.10 关键概念
11.11 总结
11.12 复习题
11.13 编程练习
第12章 存储类、链接和内存管理
12.1 存储类
12.2 存储类说明符
12.3 存储类和函数
12.4 随机数函数和静态变量
12.5 掷骰子
12.6 分配内存:malloc()和free()
12.7 ANSI C的类型限定词
12.8 关键概念
12.9 总结
12.10 复习题
12.11 编程练习
第13章 文件输入/输出
13.1 和文件进行通信
13.2 标准I/O
13.3 一个简单的文件压缩程序
13.4 文件I/O:fprintf ( )、fscanf ( )、fgets ( )和fputs ( )函数
13.5 随机存取:fseek()和ftell()函数
13.6 标准I/O内幕
13.7 其他标准I/O函数
13.8 关键概念
13.9 总结
13.10 复习题
13.11 编程练习
第14章 结构和其他数据形式
14.1 示例问题:创建图书目录
14.2 建立结构声明
14.3 定义结构变量
14.4 结构数组
14.5 嵌套结构
14.6 指向结构的指针
14.7 向函数传递结构信息
14.8 把结构内容保存到文件中
14.9 结构:下一步是什么
14.10 联合简介
14.11 枚举类型
14.12 typedef简介
14.13 奇特的声明
14.14 函数和指针
14.15 关键概念
14.16 总结
14.17 复习题
14.18 编程练习
第15章 位操作
15.1 二进制数、位和字节
15.2 其他基数
15.3 C的位运算符
15.4 位字段
15.5 关键概念
15.6 总结
15.7 复习题
15.8 编程练习
第16章 C预处理器和C库
16.1 翻译程序的第一步
16.2 明显常量:#define
16.3 在#define中使用参数
16.4 宏,还是函数
16.5 文件包含:#include
16.6 其他指令
16.7 内联函数
16.8 C库
16.9 数学库
16.10 通用工具库
16.11 诊断库
16.12 string.h库中的memcpy()和memmove()
16.13 可变参数:stdarg.h
16.14 关键概念
16.15 总结
16.16 复习题
16.17 编程练习
第17章 高级数据表示
17.1 研究数据表示
17.2 从数组到链表
17.3 抽象数据类型(ADT)
17.4 队列ADT
17.5 用队列进行模拟
17.6 链表与数组
17.7 二叉搜索树
17.8 其他说明
17.9 关键概念
17.10 总结
17.11 复习题
17.12 编程练习
附录A 复习题答案
附录B 参考资料
· · · · · · (收起)
喜欢读"C Primer Plus"的人也喜欢的电子书 · · · · · ·
喜欢读"C Primer Plus"的人也喜欢 · · · · · ·
C Primer Plus的话题 · · · · · · ( 全部 条 )



C Primer Plus的书评 · · · · · · ( 全部 54 条 )
> 更多书评 54篇
-
一、数组名是该数组首元素的地址。 如:int test[]; test = &test[0]; 二、可以用指针标识数组的每个元素,并得到每个元素的树脂。 如:test[n] = *(test + n),即“寻址到内存中的test,然后移动n个单位,再取出数值”。 三、如何区分*(test +2) 和*test +2? 回复:间接运算符(*)的优先级高于+,因此*test +2 等价于(*test) + 2; *(test + 2) 表示test的第三个元素的值 *test + 2表示第一个元素的值和2相加 四、由于...
2012-07-15 09:42 1人喜欢
一、数组名是该数组首元素的地址。 如:int test[]; test = &test[0]; 二、可以用指针标识数组的每个元素,并得到每个元素的树脂。 如:test[n] = *(test + n),即“寻址到内存中的test,然后移动n个单位,再取出数值”。 三、如何区分*(test +2) 和*test +2? 回复:间接运算符(*)的优先级高于+,因此*test +2 等价于(*test) + 2; *(test + 2) 表示test的第三个元素的值 *test + 2表示第一个元素的值和2相加 四、由于数组名实际就是数组首元素的地址,如果函数在传递实际参数的时候是一个数组名,那么形式参量必须是与之相匹配的指针。因此,C语言对于int arr[]和int *arr的解释是相同的,都是arr是指向int的指针。 因此,下面的四种函数原型是等价的: int sum(int *arr,int n); int sum(int *,int); int sum(int arr[],int n); int sum(int [],int); ps:函数中函数原型是允许省略名称的。 五、指针参数的使用 *start++中一元运算符*和++具有相等的优先级,但它在结合时是从右向左进行的。这说明++应用在start上,而不是在*start上,也就是指针自增1,而不是指针所指向的数据自增1. *++start中首先由指针自增1,然后再是使用其指向的值。 (*start)++中首先会使用start所指向的数据,然后使该数据自增1,而不是指针自增1,这里我的理解是,(*start)可以看作一种数据类型,代表着一个具体的数值,所以前面说了“首先会使用start所指向的数据”。 六、指针操作 代码例子: #include "stdafx.h" int main(int argc, char* argv[]) { int arr[5] = {0,1,2,3,4}; int *test,*pTest; test = arr;//把一个地址赋值给指针 pTest = &arr[2]; printf("test = %p,*test = %d,&test = %p\n",test,*test,&test); printf("test + 2 = %p,&arr[2] = %p\n",test + 2,&arr[2]); printf("pTest++ = %p\n",pTest++); printf("pTest - test = %d\n",pTest - test); printf("pTest - 1 = %p\n",pTest - 1); getchar(); return 0; } ①、指针的赋值。通常使用数组名或者地址运算符&来进行地址赋值。如 test = arr;pTest = &arr[2]; ②、将一个整数加给指针。这个整数都会和这个指针所指向的类型的字节数相乘,然后将得到的结果加到指针初始的地址上。如test + 2等价于&test[2]. ③、增加指针的值。可以使用一般的加法或者增量运算符来增加一个指针的值。如pTest++,但是不能直接使一个指针和另外一个指针相加。(这个需要和同事确认下,是否是这样的~) ④、从指针中减去一个整数。可以使用-来减去一个整数。 ⑤、减小指针的值。可以使用减量运算符来进行减去一个指针的值。如pTest--相当于-1之后,pTest不再指向第三个元素,而是指向了第二个元素。 ⑥、求差值。可以对指向同一个数组(重点:必须是同一个数组)的两个元素的指针求差值,以求出两个元素的距离。差值的单位是相应类型的大小。如果pTest - test的值是2,就是因为指针所指向的对象之间的距离为2个int数值的大小。 七、如果需要让被调函数来修改调用函数中的变量,就必须用指针。这点也是值传递、引用传递、指针传递三者的差别,下一篇文章就写下这三者的差别。 原文链接:http://www.guangxin.me/post/2012-06-22/40027477071
回应 2012-07-15 09:42 -
豆辫 (外表很内向,其实很开朗)
笃行(@duxing) #C Primer Plus勘误#[http://url.cn/0wMoeh] 1.第360页,程序清单13.2里有个函数:strcpy(name,argv[1]); 与361页所描述的不符,没有涉及所谓的参数“LEN-5”。 代码函数应该改为: strncpy(name,argv[1], LEN - 5); [http://t.qq.com/p/t/66024127681536]2011-07-15 11:30 1人喜欢
笃行(@duxing) #C Primer Plus勘误#http://url.cn/0wMoeh 1.第360页,程序清单13.2里有个函数:strcpy(name,argv[1]); 与361页所描述的不符,没有涉及所谓的参数“LEN-5”。 代码函数应该改为: strncpy(name,argv[1], LEN - 5); http://t.qq.com/p/t/66024127681536
回应 2011-07-15 11:30 -
了利 (渴望PIN:1234(PUK:49669920))
9.1 函数概述 9.1.1 编写和使用一个简单的函数 9.1.2 程序分析 9.1.3 函数参数 9.1.4定义带有参数的函数:形式参量 9.1.5 带参数函数的原型声明 9.1.6 调用带有参数的函数:实际参数 9.1.7黑盒子观点 9.1.8 使用return从函数中返回一个值2017-11-14 11:30
-
-
1. C竟然是一门可移植性很好的语言,那编写图形程序呢?会用到操作系统接口,QT可以设计跨平台的图形程序设计 2. gcc 在linux下有个 cc 别名 3. 编译与链接: 编译器:源代码 ---> 目标代码(一般扩展名为 o) 链接器:目标代码 + 库代码 + 启动代码 ---> 可执行代码 4. 标准:C89 与 C99 5. 书籍内容组织结构:想参考手册一样的并列结构不适合新手学习,螺旋式上升结构更好 6. 参考维基上面得定义,相对讲解详细,相关链...
2014-07-26 15:29
1. C竟然是一门可移植性很好的语言,那编写图形程序呢?会用到操作系统接口,QT可以设计跨平台的图形程序设计 2. gcc 在linux下有个 cc 别名 3. 编译与链接: 编译器:源代码 ---> 目标代码(一般扩展名为 o) 链接器:目标代码 + 库代码 + 启动代码 ---> 可执行代码 4. 标准:C89 与 C99 5. 书籍内容组织结构:想参考手册一样的并列结构不适合新手学习,螺旋式上升结构更好 6. 参考维基上面得定义,相对讲解详细,相关链接也很有帮助,会给出知识结构链接。 编译器:是一种电脑程序,它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。http://zh.wikipedia.org/wiki/%E7%B7%A8%E8%AD%AF%E5%99%A8 链接器:又译为链结器、连结器,是一个程序,将一个或多个由编译器或汇编器生成的目标文件外加库链接和启动文件为一个可执行文件。 http://zh.wikipedia.org/wiki/%E9%93%BE%E6%8E%A5%E5%99%A8 维基上汉英词汇: 编译器:Compiler 链接器:Linker 解释器:Interpreter 预处理器:Preprocessor 目标语言:Target Language 目标代码:Object Code 机器代码:Machine Code 汇编程序:Assembler 可执行文件:Executables
回应 2014-07-26 15:29 -
徐十胖 (生命是扯淡)
第一章 :概述 1.1 C语言的起源 贝尔实验室的Dennis Ritchie,于1972年在Ken Tompson 的B语言基础上发展而来 1.2 使用C语言的一些理由 1、优良的设计特性,强大的控制能力 2、高效的执行效率 3、强大的可移植性 4、灵活性 一些值得注意的: C语言由于太过注重自由和灵活,必然会导致某些难以被追踪到的错误,即:自由的代价是永远的警惕 1.3 C语言的应用 嵌入式、LINUX的开发、C++必备的基础 1.4 计算机的工作原理 数字指令—...2012-06-22 23:18
第一章 :概述 1.1 C语言的起源 贝尔实验室的Dennis Ritchie,于1972年在Ken Tompson 的B语言基础上发展而来 1.2 使用C语言的一些理由 1、优良的设计特性,强大的控制能力 2、高效的执行效率 3、强大的可移植性 4、灵活性 一些值得注意的: C语言由于太过注重自由和灵活,必然会导致某些难以被追踪到的错误,即:自由的代价是永远的警惕 1.3 C语言的应用 嵌入式、LINUX的开发、C++必备的基础 1.4 计算机的工作原理 数字指令——使得计算机工作 1.5 高级计算机语言和编译器 与C类似的高级编程语言,可以从用来简化编译的过程 1、从人类的角度来说:对于纷繁复杂的硬件,人们不必再去完全的了解,从而简化了很多工作。 2、对计算机的要求:需要理解高级语言,这时就需要编译器了,当然编译器的好处在于,只需要高级语言去实现一次,就可以在所有机器上编译实现期待的相同的效果了。 1.6 使用C语言的七个步骤 1、定义程序及其目标 写程序之前必须先对程序有个整体框架的思考和度量才能对其有着正确的理解 2、设计程序 对流程有着大体的把握,例如数据结构的选取,算法的实现,框图的绘制 3、编写代码 就是具体的实现,编写代码 4、编译 将源代码通过编译来形成可执行代码 5、执行程序 查看运行结果 6、测试和调试程序 测试各种情况下程序的稳定性,通过调试来达到控制的最佳性能 7、维护和修改程序 代码不可能没有BUG,必须有不断的修改,程序才能进一步的完善,优化。 1.7 编程机制 1.7.1目标代码文件,可执行文件和库 下图就很好的说明了文件的编译过程
值得注意的TIPS:编译使得编程结构模块化,这样就可以分别编译各个模块,然后用链接器将编译过的模块结合起来,这样,如果只修改一个模块,就不需要再重新编译各个模块的东西,极大地简化了程序实现的过程。
回应 2012-06-22 23:18
-
了利 (渴望PIN:1234(PUK:49669920))
9.1 函数概述 9.1.1 编写和使用一个简单的函数 9.1.2 程序分析 9.1.3 函数参数 9.1.4定义带有参数的函数:形式参量 9.1.5 带参数函数的原型声明 9.1.6 调用带有参数的函数:实际参数 9.1.7黑盒子观点 9.1.8 使用return从函数中返回一个值2017-11-14 11:30
-
了利 (渴望PIN:1234(PUK:49669920))
7.1 if语句 7.2在if语句中添加else关键字 7.2.1另一个例子:介绍getchar()和putchar() 7.2.2ctype.h系列字符函数 (程序清单 7.3 cypher2.c 程序) 7.2.3 多重选择else if 7.2.4把else和if配对 7.2.5多层嵌套的if 7.3获得逻辑性 7.3.1改变拼写法:iso646.h头文件 7.3.2优先级 7.3.3求值的顺序 7.3.4范围 7.4一个统计字数的程序 7.5条件运算符?: 7.6循环辅助手段:continue和break 7.7多重选择:switch和break 7.7.1使用sw...2017-10-26 11:07
7.1 if语句
7.2在if语句中添加else关键字
7.2.1另一个例子:介绍getchar()和putchar()
7.2.2ctype.h系列字符函数
(程序清单 7.3 cypher2.c 程序)
7.2.3 多重选择else if
7.2.4把else和if配对
7.2.5多层嵌套的if
7.3获得逻辑性
7.3.1改变拼写法:iso646.h头文件
7.3.2优先级
7.3.3求值的顺序
7.3.4范围
7.4一个统计字数的程序
7.5条件运算符?:
7.6循环辅助手段:continue和break
7.7多重选择:switch和break
7.7.1使用switch语句
7.7.2只读取一行的首字符
7.7.3多重标签
(程序清单7.12 vowels.c程序)
7.7.4switch和if else
7.8goto语句
回应 2017-10-26 11:07 -
了利 (渴望PIN:1234(PUK:49669920))
3.1示例程序 3.2变量与常量数据 3.3数据:数据类型关键字 3.3.1整数类型与浮点数类型 3.3.2整数 整数以二进制储存 3.3.3浮点数 浮点数表示法将一个数分为小数部分和指数部分并将分别储存 3.4C数据类型 3.4.2其他整数类型 3.5使用数据类型 3.6参数和易犯的错误 3.7另一个例子:转义序列 3.8关键概念 3.9总结 3.10复习题2017-10-11 10:50
这本书的其他版本 · · · · · · ( 全部10 )
-
人民邮电出版社 (2016)9.4分 634人读过
-
人民邮电出版社 (2002)8.7分 65人读过
-
Addison-Wesley Professional (2013)9.4分 36人读过
-
Sams (2004)9.4分 46人读过
在哪儿借这本书 · · · · · ·
以下豆列推荐 · · · · · · ( 全部 )
- 豆瓣高分书2700本:千人打分不低于8分 (偶就是那个鬼)
- 豆瓣读书评分9分以上榜单 (无人的冬夜)
- 千评9分书 (Sheryl)
- 我的编程之路 (Yun)
- 【C/C++学习指南】 (小李飞刀)
谁读这本书?
二手市场
订阅关于C Primer Plus的评论:
feed: rss 2.0
0 有用 Cambrian 2017-04-07
为了教萌妹编程
3 有用 洁 2009-05-20
总体来说不怎么样,简单的地方太简单,难的地方又说的很简单,再加上翻译的水平也很烂。---冒犯了冒犯了,我看到最后才发现作者的水平确实是高~ 具有历史意义的时刻!---最后一章是数据结构的问题了不看行不,我算是看完一本专业的书啦!---稍微看下网上的参考文档就会发现,这书里好多的函
4 有用 t ú n 2012-01-04
神书呀。。。
4 有用 追风少年陈小明 2013-09-14
看了两个月,尼玛,接下来先写两万行代码再说~
42 有用 安彻 2013-03-02
很棒的自学。我是拿来作自学C语言教材用的,但还是不得不承认此书比较难,要自己摸索的细节比较多,课后习题认真做,往往最后的几道是向下章节的过渡。以后还是会拿来重读,再查阅的。(官网自带的习题答案是不全的,新浪博客“逆潮堂”有比较详细的答案)
0 有用 eval 2020-12-12
补标
0 有用 NathanLi 2020-11-14
力荐!!仔细通读全书会让你的C水平有无与伦比的提升!
0 有用 Angelolee 2020-09-02
很实用的一本书,细节很到位
0 有用 盗火者Howell 2020-08-29
补标。
0 有用 山寺日高未起僧 2020-08-04
高级数据结构真的有点颠覆我,厉害了我的C。