摘要

《C专家编程》可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,《C专家编程》可以帮助他们站在C的高度了解和学习C++。书本撷取了几十个实例,细致、深入地讲解了C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及分析了如何进一步学习C++等问题。《C专家编程》是一本ANSIC编程语言的高级读本。它适用于已经编写过C程序的人,以及那些想迅速获取一些专家观点和技巧的人。

专家级的C编程指南展示C程序员的编程技巧。

即使你读过AndyKoneig的《C陷阱与缺陷》,你还是应该看看PeterVanDerLinden的书。我想,他们两人的书称都应该千方百计的搞到,如获至宝地捧读。如果我是你的上司,这是必须的要求。

C和C++经典著作 C专家编程Expert C Programming Deep C Secrets 内容简介

《C和C++经典著作 C专家编程Expert C Programming Deep C Secrets》展示了C程序员所使用的编码技巧,并专门开辟了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值。《C和C++经典著作?C专家编程Expert C Programming Deep C Secrets》可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,《C和C++经典著作 C专家编程Expert C Programming Deep C Secrets》可以帮助他们站在C的高度了解和学习C++。

C和C++经典著作 C专家编程Expert C Programming Deep C Secrets 目录

第1章 C:穿越时空的迷雾

1.1 C语言的史前阶段

1.2 C语言的早期体验

1.3 标准I/O库和C预处理器

1.4 K&R C

1.5 今日之ANSI C

1.6 它很棒,但它符合标准吗

1.7 编译限制

1.8 ANSI C标准的结构

1.9 阅读ANSI C标准,寻找乐趣和裨益

1.10 “安静的改变”究竟有多少安静

1.11 轻松一下——由编译器定义的Pragmas效果

第2章 这不是Bug,而是语言特性

2.1 这关语言特性何事,在Fortran里这就是Bug呀

2.2 多做之过

2.3 误做之过

2.4 少做之过

2.5 轻松一下——有些特性确实就是Bug

2.6 参考文献

第3章 分析C语言的声明

3.1 只有编译器才会喜欢的语法

3.2 声明是如何形成的

3.3 优先级规则

3.4 通过图表分析C语言的声明

3.5 typedef可以成为你的朋友

3.6 typedef int x[10]和#define x int[10]的区别

3.7 typedef struct foo{ ... foo; }的含义

3.8 理解所有分析过程的代码段

3.9 轻松一下——驱动物理实体的软件

第4章 令人震惊的事实:数组和指针并不相同

4.1 数组并非指针

4.2 我的代码为什么无法运行

4.3 什么是声明,什么是定义

4.4 使声明与定义相匹配

4.5 数组和指针的其他区别

4.6 轻松一下——回文的乐趣

第5章 对链接的思考

5.1 函数库、链接和载入

5.2 动态链接的优点

5.3 函数库链接的5个特殊秘密

5.4 警惕Interpositioning

5.5 产生链接器报告文件

5.6 轻松一下——看看谁在说话:挑战Turing测验

第6章 运动的诗章:运行时数据结构

6.1 a.out及其传说

6.2 段

6.3 操作系统在a.out文件里干了些什么

6.4 C语言运行时系统在a.out里干了些什么

6.5 当函数被调用时发生了什么:过程活动记录

6.6 auto和static关键字

6.7 控制线程

6.8 setjmp和longjmp

6.9 UNIX中的堆栈段

6.10 MS-DOS中的堆栈段

6.11 有用的C语言工具

6.12 轻松一下——卡耐基-梅隆大学的编程难题

6.13 只适用于高级学员阅读的材料

第7章 对内存的思考

7.1 Intel 80x86系列

7.2 Intel 80x86内存模型以及它的工作原理

7.3 虚拟内存

7.4 Cache存储器

7.5 数据段和堆

7.6 内存泄漏

7.7 总线错误

7.8 轻松一下——“Thing King”和“页面游戏”

第8章 为什么程序员无法分清万圣节和圣诞节

8.1 Portzebie度量衡系统

8.2 根据位模式构筑图形

8.3 在等待时类型发生了变化

8.4 原型之痛

8.5 原型在什么地方会失败

8.6 不需要按回车键就能得到一个字符

8.7 用C语言实现有限状态机

8.8 软件比硬件更困难

8.9 如何进行强制类型转换,为何要进行类型强制转换

8.10 轻松一下——国际C语言混乱代码大赛

第9章 再论数组

9.1 什么时候数组与指针相同

9.2 为什么会发生混淆

9.3 为什么C语言把数组形参当作指针

9.4 数组片段的下标

9.5 数组和指针可交换性的总结

9.6 C语言的多维数组

9.7 轻松一下——软件/硬件平衡

第10章 再论指针

10.1 多维数组的内存布局

10.2 指针数组就是Iliffe向量

10.3 在锯齿状数组上使用指针

10.4 向函数传递一个一维数组

10.5 使用指针向函数传递一个多维数组

10.6 使用指针从函数返回一个数组

10.7 使用指针创建和使用动态数组

10.8 轻松一下——程序检验的限制

第11章 你懂得C,所以C++不在话下

11.1 初识OOP

11.2 抽象——取事物的本质特性

11.3 封装——把相关的类型、数据和函数组合在一起

11.4 展示一些类——用户定义类型享有和预定义类型一样的权限

11.5 访问控制

11.6 声明

11.7 如何调用成员函数

11.8 继承——复用已经定义的操作

11.9 多重继承——从两个或更多的基类派生

11.10 重载——作用于不同类型的同一操作具有相同的名字

11.11 C++如何进行操作符重载

11.12 C++的输入/输出(I/O)

11.13 多态——运行时绑定

11.14 解释

11.15 C++如何表现多态

11.16 新奇玩意——多态

11.17 C++的其他要点

11.18 如果我的目标是那里,我不会从这里起步

11.19 它或许过于复杂,但却是惟一可行的方案

11.20 轻松一下——死亡计算机协会

11.21 更多阅读材料

附录A 程序员工作面试的秘密

附录B 术语表

C和C++经典著作 C专家编程Expert C Programming Deep C Secrets 精彩文摘

C:穿越时空的迷雾

C诡异离奇,缺陷重重,却获得了巨大的成功。

——Dennis Ritchie

1.1 C语言的史前阶段

听上去有些荒谬,C语言的产生竟然源于一个失败的项目。1969年,通用电气、麻省理工学院和贝尔实验室联合创立了一个庞大的项目——Multics工程。该项目的目的是创建一个操作系统,但显然遇到了麻烦:它不但无法交付原先所承诺的快速而便捷的在线系统,甚至连一点有用的东西都没有弄出来。虽然开发小组最终勉强让Multics开动起来,但他们还是陷入了泥淖,就像IBM在OS/360上面一样。他们试图建立一个非常巨大的操作系统,能够应用于规模很小的硬件系统中。Multics成了总结工程教训的宝库,但它同时也为C语言体现“小即是美”铺平了道路。

当心灰意冷的贝尔实验室的专家们撤离Multics工程后,他们又去寻找其他任务。其中一位名叫Ken Thompson的研究人员对另一个操作系统很感兴趣,他为此好几次向贝尔管理层提议,但均遭否决。在等待官方批准时,Thompson和他的同事Dennis Ritchie自娱自乐,把Thompson的“太空旅行”软件移植到不太常用的PDP-7系统上。太空旅行软件模拟太阳系的主要星体,把它们显示在图形屏幕上,并创建了一架航天飞机,它能够飞行并降落到各个行星上。与此同时,Thompson加紧工作,为PDP-7编写了一个简易的新型操作系统。它比Multics简单得多,也轻便得多。整个系统都是用汇编语言编写的。Brian Kemighan在1970年给它取名为UNIX,自嘲地总结了从Multics中获得的那些不应该做的教训。图1—1描述了早期C、UNIX和相关硬件系统的关系。

是先有C语言还是先有UNIX呢?说起这个问题,人们很容易陷入先有鸡还是先有蛋的套套中。确切地说,UNIX比C语言出现得早(这也是为什么UNIX的系统时间是从1970年1月1日起按秒计算的,它就是那时候产生的啊)。然而,我们这里讨论的不是家禽趣闻,而是编程故事。用汇编语言编写UNIX显得很笨拙,在编制数据结构时浪费了大量的时间,而且系统难以调试,理解起来也很困难。Thompson想利用高级语言的一些优点,但又不想像PL/I那样效率低下,也不想碰见在Multics中曾遇到过的复杂问题。在用Fortran进行了一番简短而又不成功的尝试之后,Thompson创建了B语言,他把用于研究的语言BCPL作了简化,使B的解释器能常驻于PDP-7只有8KB大小的内存中。B语言从来不曾真正成功过,因为硬件系统的内存限制,它只允许放置解释器,而不是编译器,由此产生的低效阻碍了使用B语言进行UNIX自身的系统编程。

c语言多态性编码图形,C和C++经典著作 C专家编程Expert C Programming Deep C Secrets pdf...相关推荐

  1. 编码——永不退色的计算机科学经典著作

    关于那些经典我们一直在研读 编码这本书,是我在毕业之后买的第一本和计算机有关的书. 在这个信息和数据快速膨胀的时代,很多人离不开的是手机,很少回去在买书了,或者说"干嘛浪费钱买书啊,网上多的 ...

  2. r语言ggplot合并图形_R中带有ggplot2的图形

    r语言ggplot合并图形 介绍 (Introduction) R is known to be a really powerful programming language when it come ...

  3. 机器学习训练素材_广告素材在编码训练营中导航的5条提示

    机器学习训练素材 So you decided to do it - embark on a journey to become a software engineer. You may have t ...

  4. [Messy Note 1] 有关文本编辑语言及编码的一些概念

    1.纯文本与富文本 纯文本--只有文字和基本的标点,如记事本.(纯文本格式:Plain Text Format) 富文本--可以有图以及各种特殊标点,分段等格式,如 Word.(富文本格式:Rich ...

  5. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理

    继上一期的文章[干货丨零基础学习 R 语言?]小编在介绍了R语言基础入门(包括R的安装和载入.数据导入和导出方法等),在这一期小编继续为你挖掘R语言的巧妙用处,跟大家探讨如何创建和保存图形,如何修改图 ...

  6. go 变量大写_28. 一文了解Go语言中编码规范

    大家好,我是明哥. 由于某些不可抗力,之前该专栏的所有内容都被删除了.因此之后的一段时间内,我会重新发布这些文章,先给已经看过的关注者提个醒. 本文原文:http://golang.iswbm.com ...

  7. 用c语言 在图形状态下 编动画,用C语言实坝图形动画设计.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp行业资料&nbsp>&nbsp水利工程 用C语言实坝图形动画设计.pdf2页 本文档一共被下 ...

  8. 如何打开电脑c语言窗口,C语言控制台窗口图形界面编程(五). -电脑资料

    控制文本的移动是控制台窗口界面编程的一个很重要的功能,有了这个功能我们可以实现界面的滚动, BOOL ScrollConsoleScreenBuffer(      //文本移动函数 HANDLE h ...

  9. R count函数_第477期|R语言绘图之图形组合

    科研作图/科研文章为了节省版面,我们通常会将多张图片合成一张图,本次分享将向大家展示如何使用R语言进行图形组合.早已闻cowplot大名,但是不知道它的具体目标是什么,本文也会对其重点介绍. < ...

最新文章

  1. requests 两种传参方式
  2. java servlet filter_Java Servlet Filter
  3. 2022年的东南亚跨境市场风口,越南电商市场一定不要错过
  4. 十分经典的批处理教程
  5. [外文理解] DDD创始人Eric Vans:要实现DDD原始意图,必须CQRS+Event Sourcing架构。
  6. java jsoup爬取动态网页_java通过Jsoup爬取网页(入门教程)
  7. 自动补足算法是什么_如何自定义Shell(Fish版)的自动补全规则?
  8. 11届蓝桥杯青少年组C++全国赛高级组 六.编程实现:求阶乘(python3实现)
  9. Qt工作笔记-自定义开关控件
  10. 普朗克黑体辐射定律python代码实现
  11. fixed与sticky的区别
  12. 卢伟冰为Redmi K50电竞版预热:相机拍照效果越来越出色
  13. INET Sockets Tour: ioctl()
  14. 简易OA漫谈之工作流设计(五,直接上级)
  15. 两台服务器身份验证,OAuth 2 从入门到精通(一) - 身份认证服务器
  16. bootstrap49-Bootstrap 分割的按钮下拉菜单
  17. String中的intern方法详解
  18. SQL教程——连接查询之SQL99标准
  19. 企业单位申请代码签名证书方法
  20. 两年后再次遇到的Oracle启动报错,ORA-01012:not logged

热门文章

  1. JAVA初学,小白编程,8大基本类型
  2. 语音转文字软件哪个好,这三款值得收藏
  3. 如何看待用户反馈意见
  4. 前后端分离的文件上传,上传zip或者rar压缩包(vue+springboot)。
  5. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift全文翻译
  6. windows server 2016 安装openssh
  7. 读书笔记004:《伤寒论》- 手阳明大肠经
  8. 2018服务机器人发展现状及2019趋势分析
  9. linux定时情况root mail,Linux_Linux系统下mail命令使用,我经常用root帐号登录RHEL5,在 - phpStudy...
  10. HTML_html自动播放音乐