c primer plus第6版中文版pdf,《C++ Primer Plus 第6版中文版》

  c primer plus第6版中文版pdf,《C++ Primer Plus 第6版中文版》

  关注异步书,置顶微信官方账号。

  每天和你分享IT书籍、技术、干货、职场的知识。

  参与文末话题讨论,每天赠送异步书。

  3354异步边肖

  今天我们要读的是一门经久不衰的C语言畅销经典课程。自1984年第一版诞生以来,畅销34年,历经6版升级。是程序员学习C语言不可多得的良师益友,而且是《C Primer Plus(第6版)中文版》。

  1.C语言的历史与变迁一提到C语言,就离不开计算机编程语言的进化与演变。这证明了C语言在整个编程领域的重要地位。c语言不是凭空出现的。它总是伴随着一个很长的故事。有时候我不知道从哪里开始.

  C语言的前身是B语言,而B语言的前身是BCPL语言,是由CPL语言衍生而来,CPL是在Algol 60的基础上发展而来的.那么,让我们从这里开始。

  在高级编程语言的进化史中不得不提ALGOL。1950年,欧美计算机科学家共同开发了ALGOL。ALGOL是算法语言的缩写,也是计算机发展史上第一个有明确定义的高级语言。计算机器协会(ACM)将ALGOL模式列为算法描述的标准,这启发了Pascal、Ada、c等现代ALGOL语言的出现。

  阿尔戈尔58

  1958年,ACM和当时的德意志联邦共和国的Gesellschaft fr Angewandte Mathematik und me chanik(GAMM)参加了在苏黎士举行的第一次编程会议,并将这种新语言命名为IAL,即国际代数语言(IAL),后来又命名为ALGOL,即算法语言。后来改为Algol 58,成为Algol家族的第一个成员。

  阿尔戈尔60

  1960年1月,图灵奖获得者Alan J.Perlis在巴黎举行的顶级软件专家研讨会上发表了《Algol 60报告》,确定了编程语言Algol 60。1962年,艾伦佩利修订了Algol 60。

  Algol 60引入了很多新概念(如局部性、动力学、递归、Bacos-Noel范式BNF等。),这是编程语言发展史上的一个里程碑。它标志着编程语言已经成为一门独立的科学学科,为软件自动化和软件可靠性的后期发展奠定了基础。Algol 60是很多后期编程语言必备的软件工程工具的原型,它的开发是一群有才华的人的工作成果。

  组合编程语言

  1963年,英国剑桥大学基于Algol 60开发了CPL语言。CPL语言更接近硬件,但由于规模较大,实现起来比较困难。

  BCPL(基本组合编程语言)

  BCPL源自CPL语言。1967年,英国剑桥大学的Martin Richards在访问麻省理工学院期间,简化了CPL语言,删除了语言中最复杂的部分,并设计了BCPL语言。该语言在20世纪70年代初被广泛应用于许多项目中,它是牛津大学OS6操作系统中使用的第一个开发工具。后来经过贝尔实验室的改进和推广,成为UNIX上的通用开发语言。

  BCPL有点类似Fortran,也是典型的面向过程的高级语言。BCPL也是最早使用库函数封装基本输入输出的语言之一,所以它的跨平台可移植性非常好。与当代的BASIC和PASCAL不同,BCPL的代码是用小写字母写的。BCPL的内存管理早期很差,但后来有所改善。但是,BCPL对字符串的支持很差,这个缺点一直没有得到解决。

  作为早期的编程语言,BCPL不再被广泛使用,但它的影响是深远的。BCPL程序从一个主功能开始,功能模块可以添加到每个功能中。函数支持嵌套和递归。BCPL是第一个使用括号的语言(如今,在各种编程语言中,括号随处可见)。

  b语言

  1970年,贝尔实验室的研究员肯汤普森写了一个模拟太阳系航行的视频游戏:太空旅行。他找了一个没有操作系统的闲置机PDP-7,游戏要用操作系统的一些功能,于是着手开发PDP-7的操作系统。但是,很难用现有的语言在这台机器上开发操作系统。Thompson删除了BCPL语言中不必要的成分,开发了一种通用编程语言:B语言(取BCPL的首字母),并用B语言编写了第一个UNIX操作系统。

  b语言是非类型化语言,所有数据对应的都是机器字。b语言很简单,更接近硬件。程序员可以通过内存地址直接操作内存。除了一些库函数,B语言还包含了汤普森的一些个人偏好(主要是在一些特定的程序中减少非空格字符的数量)。B语言虽然使用的时间不长,但在编程语言发展史上占有重要地位。

  图1的PDP-7 DEC

  c编程语言

  好景不长,B语言的非类型化成为PDP-11机器上访问字符类型的软肋。1971年,同样热爱太空旅行的丹尼斯M里奇(Dennis M.Ritchie)为了更早地玩游戏,加入了汤普森的开发项目,共同开发UNIX。他的主要工作是改造B语言,使其更加成熟。最重要的变化是在B语言中引入了数据类型的概念。丹尼斯在B语言中加入了字符类型,同时修改了B语言的编译器,生成PDP-11的机器指令。他把这种稍微扩展的语言称为NB,即“新B”。

  图森汤普森(左)和丹尼斯里奇(右)

  1972年,经过不懈的努力,丹尼斯里奇终于设计出了一种基于B语言的新语言。他把BCPL的第二个字母作为这种语言的名字,这就是C语言。

  1973年初,C语言主体完成。汤普森和里奇迫不及待地开始用C语言重写UNIX。此时的他们全身心投入到C语言和UNIX的开发中,完全沉浸在编程的乐趣中,早已忘记了曾经的太空旅行游戏。

  1977年,Dennis Ritchie发表了独立于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

  1978年,美国电话电报公司贝尔实验室正式发布了C语言。布莱恩柯尼根和丹尼斯里奇写的《The C Programming Language》 (《C程序设计语言》)出版了。这本书被C语言开发者称为“K R”,多年来一直被视为C语言的非正式标准规范。人们把这个版本的C语言叫做K R C。

  1983年,ANSI为了使C语言健康发展,于当年夏天在CBEMA的指导下成立了X3J11委员会,制定C语言标准。该委员会由C语言作者和应用程序员、硬件制造商、编译器和其他软件工具制造商、软件设计师、顾问和学者组成。

  在1989年,X3J11委员会在年底发布了ANSI89报告。随后,ANSI发布了第一个完整的C语言标准:ANSI X3.159-1989,简称“C89”,即ANSI C或C89标准。

  1990年,国际标准化组织(ISO)和国际电工委员会(IEC)接受1989 ANSI C作为ISO C标准,并将其命名为ISO/IEC 9899:1990。由于该标准于1990年发布,因此也被称为C90标准(尽管在实践中仍被称为C89标准)。实际上,C90标准与C89标准是相同的。

  1995年,ISO对C90进行了一些修订,即“1995基准补充1(ISO/IEC/9899/AMD1:1995)”。ANSI标准化后,虽然C语言本身不断完善,但C语言的标准长期不变。

  1999年,在做了一些必要的修改和改进后,ISO发布了一个新的C语言标准,命名为ISO/IEC 9899:1999,简称C99。

  2011年12月8日,ISO正式发布了C语言的最新标准C11。因为之前不知道具体发布时间,所以一度叫C1X。正式名称是ISO/IEC 9899:2011,简称“C11”。新标准提高了与C的兼容性,并增加了一些新功能。

  2.1973-1980年(从C语言主体完成到C语言标准发布)C语言及其标准的变化,特别是1977年前后,C语言的变化主要集中在对可移植性和类型安全的考虑上,讨论如何处理大量代码移植到新平台时出现和潜在的问题。在此期间,C语言中加入了无符号、长整型、联合和枚举类型。在此之前,C语言仍然保留了许多非类型化的特性。例如,在早期的语言手册或代码中,指针和整数内存索引几乎没有区别;指针和无符号整数的算术特性相似,容易让人混淆。添加无符号类型使得无符号整数的运算不同于指针运算。此外,早期的C语言允许整数和指针之间的赋值(即使在那时,这种做法也是不被鼓励的)。随后,C语言引入了类型转换符号(Algol 68中称为“cast”),专门用于类型转换。

  到1982年,虽然K R C已经被认为是C语言的非正式标准,但它不能反映实际的C语言。尤其是它没有提到void和enum类型。虽然《The C Programming Language》提到了一种新的(组成)结构的方式,但C语言在书出版后只支持一些与结构相关的操作,包括给它们赋值,将它们传递给函数以及从函数返回等等。虽然AT T和大多数编译器供应商发布的编译器很快添加了这些变化,但当时仍然没有完整的、权威的语言描述。c语言亟待规范。

  1983年,ANSI成立了X3J11委员会,制定C语言标准。委员会在C语言上做了重大改动,借鉴了C [Stroustrup 86]的做法,在函数签名中加入了参数的类型。在此之前,C语言的外部函数声明是这样的:

  双罪();

  这个声明只能说明sin是一个返回double值的函数。改进后的说法是这样的:

  双重罪(double);

  声学显式表示表示函数参数的类型,更便于类型检查和转换。同时,委员会也意识到,虽然新的声明形式更好,但直接废除旧式的函数声明和定义是不合适的。我们必须妥协,让这两种形式共存。

  c本身并不提供输入/输出或者其他任何与外界交互的方式,只是依赖于一组标准的函数。X3J11委员会意识到详细描述标准C库和描述C语言本身一样重要,所以花了大量的时间来设计库函数并将其写入文档。此外,X3J11委员会在C语言的其他方面做了一些小改动。比如增加了两个类型限定符:const和volatile,改进了不同类型的转换规则。但是,在整个标准化过程中,C语言的核心部分并没有改变。大多数重要的变化发生在语言的外层:预处理器和库函数。预处理器主要执行宏替换的功能,使用与语言其他部分不同的规则。预处理器和编译器之间的交互一直没有明确的描述,X3J11试图解决这个问题。很明显,C89标准比K R C给出的解释更好更全面,另一方面,在已公布的C89标准中,C语言的语义并没有正式定义,导致在一些小细节上的争议。

  下面总结了C语言标准的一些主要变化。

  K C引入了以下主要语言特性:

  1.标准输入输出库

  2.添加struct、long int和unsigned int数据类型。

  3.组合运算符=op的形式改为op=

  C89相对于K R C的一些主要变化:

  1.添加一个新的函数原型,并严格检查函数的输入参数。

  2.添加了void、const、volatile、signed和enum关键字,删除了entry关键字。

  3.允许将结构本身作为参数传递给函数

  4.添加#elif、#error、#line和#pragma预处理命令。

  5.定义内部宏:_ _行_ _、_ _文件_ _、_ _日期_ _、_ _时间_ _、_ _STDC_ _

  6.添加了真正的标准库。

  C99相对于C89的一些主要变化:

  1.添加限制指针

  2.添加内联函数说明符以支持内联函数

  3.Add _Bool、long long int和无符号long long int数据类型。

  4.增强printf()和scanf()函数组

  5.增强数组,支持变长数组,允许在运行时确定数组长度,在数组声明中使用restric、volatile和const关键字。

  6.扩展了标准库和头文件,并添加了_ _func_ _预定义标识符。

  7.支持复合赋值

  8.支持//单行注释

  9.支持可变长度数组,

  10.支持在for语句的初始化部分定义一个或多个变量。

  11.修改了一些预处理程序。

  12.变量声明不需要放在语句块的开头。

  13.初始化结构时,允许为特定元素赋值。

  14.取消函数返回类型默认为int的规定。

  C11相对于C99的一些主要变化:

  1.add _Noreturn函数描述符。

  2.静态断言。

  3.Add _Generic关键字来支持轻量级泛型编程。

  4.Add _Atomic类型限定符和stdatomic.h头文件。

  5.Add _Thread_local存储类说明符和threads.h头文件,以支持多线程。

  6.Add _Alignas对齐说明符,_Alignof运算符,aligned_alloc()函数和stdalign.h头文件。

  7.增加了一些处理浮点数和复数的宏。

  8.添加uchar.h头文件以支持增强的Unicode。

  9.添加at_quick_exit()和quick_exit()函数。

  10.增加了新的边界检查函数结构,定义了新的安全函数,如fopen_s()、strcat_s()等。

  11.在time.h的头文件中添加timespec结构,时间单位为纳秒;原来的timeval()模式增加了一个新的创建和打开模式“X”

  14.删除了gets()函数(C99中不推荐),提供了一个更安全的替代函数gets_s()。

  3.这本书各个版本的变化和影响《C Primer Plus》 1984年第一版出来的时候,用C语言编程的人并不多,很多人是借助这本书掌握C语言的。也就是从那时开始,C语言开始蓬勃发展。055-79000一直深受编程爱好者的喜爱,自出版以来每版累计销量超过55万。

  1984年1月,《C Primer Plus》第一版问世。当时大家都把《C Primer Plus》作为C语言实际使用的非正式标准。这本书有448页。

  1993年4月,《The C Programming Language》第二版出版。自第一版出版以来,九年过去了。在这几年中,X3J11委员会于1989年底发布了C89标准。1990年,ANSI接受了C89,并将其命名为ISO/IEC 9899:1990,也就是众所周知的C90标准(C89和C90标准完全相同)。这本书已经被完全更新以适应C90标准。

  1999年,《C Primer Plus》第三版出版。在过去的六年中,ISO对C90进行了一些修订。这本书也根据这些修订进行了更新。虽然C语言本身也在不断改进和完善,但是从1990年C90标准发布至今,C语言标准已经有近十年没有变化。

  2001年9月,《C Primer Plus》第四版出版。作者斯蒂芬普拉塔的目标保持不变。他致力于编写一本有启发性、条理清晰的C语言入门书。该书还保持了一贯的风格,用许多简短的代码示例展示语言概念,以便读者理解和使用。在每章的末尾设置复习题和编程练习,帮助读者消化一些容易混淆和难以理解的概念。1999年,经过多年的修改和完善,ANSI正式发布了C99标准。为了适应C99标准,这本书在第三版刚出版两年后,就按照当时的最新标准进行了更新。经过前几版的修订,全书从初版的448页增加到970页。

  2004年12月,《C Primer Plus》第五版出版。C99标准发布后,掀起了学习C语言的高潮。为了让大家更好地学习和理解C语言,作者在不改变章节布局的情况下,增加了大量的插图和表格,以澄清一些不能用通俗易懂的语言描述清楚的概念。特别是书中标注了C语言的主要特点,方便读者日后参考和复习。在这个版本中,作者一再强调,读者应该将代码示例输入到系统中运行。只有把实践和理论结合起来,我们才能牢牢地掌握所学的知识。此外,鼓励读者更频繁地尝试修改程序,看看编译器给出了什么警告,并感受一下运行修改后的代码会发生什么。练的越多,想的越多,学的越多,掌握的越多。这本书有984页。

  2013年12月,《C Primer Plus》第6版出版。2011年12月,ISO正式发布了C语言的最新标准C11。与第五版相比,本版根据最新的C11标准进行了全面更新,增加了许多内容。引言中提到,随着C语言的发展,从早期的非正式K R C标准,到1990年的C90标准,1999年的C99标准,再到2011年的C11标准,这本书越来越成熟和完善。这本书有1080页。

  从以上《C Primer Plus》版的历史来看,最明显的变化是全书的页数。从最初的448页到最新版本的1080页,这也从另一个角度见证了C语言的发展。可以说,这本书是伴随着C语言成长起来的。在亚马逊上,这本书的所有版本都获得了好评。虽然书越来越厚,但作者的写作思路和目标一直很明确。对于中高级读者来说,这本书的讲解可能有点啰嗦,有些已经介绍过的概念经常重复。但这是初学者所需要的。这本书主要是写给初学者的,作者在书中也有提到,假设读者没有编程经验。在看这本书的过程中,我能感受到作者的引导。初学者可以自己完成这本书,没有任何压力。

  其实市面上很多编程书籍对初学者都不是很友好。看起来是厚厚的一本书,感觉在学习过程中学到了很多东西,记下了很多知识点。但是,到了具体动手编程的时候,往往会手足无措。虽然打开了编译器,但是对于初学者来说,站在那里不知道该怎么办往往是一块绊脚石。正是在这里,许多人绊倒并停止学习。有些人对此很担心,问为什么,好像学不到什么东西。问题的根源不在读者。对于初学者,尤其是零基础的人,最需要的不是详细深刻的原理分析,而是完整的代码实例。055-79000这本书最大的优点就是从头到尾都有详细完整的代码示例。读者只需要一步一步,把代码输入编译器就可以运行程序了。即使一开始什么都不懂,只要程序能运行,初学者也会有学习的信心和兴趣。这本书给了初学者继续学习的宝贵信心和动力。一边看代码,一边一个代码一个代码的看下面的详细分析。随着学习的深入,反复敲击代码对理解晦涩抽象的概念更有帮助。慢慢的,我自己会用了。当你看到自己编译通过的代码时,发自内心的愉悦是对你学习最大的鼓励和肯定。这本《C Primer Plus》的书确实是学习C语言不可多得的老师和朋友。

  4.关于作者斯蒂芬普拉塔(Stephen Prata)是马林学院(加利福尼亚州肯特菲尔德)的物理学和天文学教授。他曾经教过天文学、物理学、离散数学和计算机编程,现在已经退休了。他在加州理工学院获得学士学位,在加州大学伯克利分校获得博士学位。斯蒂芬教授是美国天文学会成员和富布赖特学者。他最早接触编程是用计算机建模集群。斯蒂芬撰写和合著了十几本书,包括《C Primer Plus》和《C Primer Plus》。

  5.目录指南《C++ Primer Plus》第6版详细讲解了C语言的基本概念和编程技巧。值得一提的是,C99和C11的新增内容在目录中特意用括号标注出来,以方便读者。全书共17章,可分为三个部分。

  第一部分,预备篇(第1~2章),用较少的篇幅介绍学习C语言所需的预备知识。

  第一章介绍了C语言的历史和特点,简要介绍了编程的几个步骤和简单的编程机制。第2章概述了C语言程序设计的基础知识。第二部分是基础章节(第3~15章)。每一章都详细讲解了C语言的相关知识。包括数据类型、格式化输入/输出、运算符、表达式、语句、循环、字符输入和输出、函数、数组和指针、字符和字符串函数、内存管理、文件输入和输出、结构、位操作等。

  第三章介绍了C语言的两种数据类型:整型和浮点型,并说明了这些数据类型是什么,如何声明和使用。此外,还介绍了常量和变量的区别。第4章重点介绍C语言的输入输出(printf()和scanf()),简单介绍#include预处理指令和const修饰符,并介绍如何定义和使用显式常量。第5章介绍了C语言的各种运算符、表达式和语句。在您熟悉如何表示数据之后,您可以学习如何处理数据。本章还介绍了C语言的许多特性(包括循环),以帮助读者组织程序。第6章重点介绍C语言的控制语句:loop (for,while,do while)。第7章重点介绍C语言的控制语句:分支和跳转(if,if else,switch,goto)。第八章开始介绍C语言的字符输入/输出(printf()、scanf()、getchar()、putchar()等。),以及与输入验证相关的一些问题和解决方法。第9章介绍函数。现在你已经学会了使用C标准库的一些函数,本章将进一步学习如何创建你自己的函数。本章巩固了以前学过的知识,同时进一步扩展了它。第10章介绍数组和指针,重点是如何编写处理数组的函数,以及数组和指针之间的密切关系。第11章介绍了字符串和字符串函数。使用C标准库中提供的大量函数处理字符串,进一步提高自己的编程水平。第12章介绍了存储类别、链接和内存管理。要更好地控制程序,必须掌握C语言的内存管理系统。使用隔离存储器存储数据是设计程序的一个关键点。第13章介绍了文档的输入和输出。如何使用C标准I/O系列函数处理文件?第14章介绍C结构和其他数据形式。第15章介绍位操作。通过介绍一些位、字节、二进制记数法等二进制记数系统的背景知识,学习如何处理位操作。提高使用C程序处理硬件问题的能力。第三部分是改进部分(第16~17章,附录B参考资料),介绍C预处理器,C库,高级数据表示。附录中详细介绍了一些关于C语言和编程的补充知识,包括C99和C11的新标准ANSI C库。

  第16章介绍C预处理器和C库。第17章介绍了高级数据表示。包括算法和抽象数据类型(ADT)的一些概念,为以后学习面向对象编程(OOP)和c做准备,因为这本书主要是写给初学者的,所以尽量详细讲解知识点,帮助没有编程经验的初学者理解抽象概念。以书中完整的程序为例,讲解C语言的知识点和注意事项。同时,完整的代码示例附有详细的注释,帮助初学者更好地理解程序。每章结尾都设计了大量的复习题和编程练习,帮助读者巩固知识,提高实际编程能力。本书可以作为C语言的教材,适合需要系统学习C语言的初学者,也适合希望巩固C语言知识或进一步提高编程技能的程序员。

  如果之前没有编程经验,建议按章节顺序学习。后面的章节一般是在理解前面章节知识的基础上,由浅入深一步步讲解。希望初学者不要跳读,以免增加阅读难度。如果有其他语言的编程经验,可以快速浏览第一部分(第1~2章),大致了解C语言的历史和基本特征。然后根据自己的具体情况和兴趣,有针对性地阅读第二部分(第3-15章)和第三部分(第16-17章)的内容,比较哪些特性是C语言独有的,哪些是其他语言共有的。如果之前学过C语言,不用很久就忘了或者生疏了,可以快速阅读第一部分和第二部分,查缺补漏。如果你对一些高级主题感兴趣,你可以阅读第三部分和附录B. 6中的参考资料。思维导图

   《Unix Primer Plus》

  斯蒂芬普拉塔的《美国》

  经久不衰的畅销C语言经典课程

  C11标准的全面更新。

  和以前的版本一样,作者的目标是为读者提供一个介绍性的,组织良好的,有见地的C语言课程。将作者的基本编程概念与C语言的细节相结合,通过大量短小精悍的例子同时演示一两个概念,鼓励读者学以致用,掌握新的主题。

  每章末尾的复习题和编程练习进一步强化了重要信息,帮助读者理解和消化那些难懂的概念。这本书以友好和易于使用的方式排列。不仅适合打算认真学习C编程的同学,也适合精通其他编程语言但又想更好地掌握C作为核心语言的开发人员。

  今日话题

  说说你学的第一门编程语言?你读过哪些异步相关的书?将此活动转发到朋友圈,边肖将抽奖选出一名读者赠送一本新的异步书。留言后加边肖微信

  回复:

  把你加入团体抽奖。

  长按二维码关注我们。

  每天和你分享IT文章。

  在“异步书”后台回复“关注”即可免费获得2000门在线视频课程;建议朋友们关注根据提示获取书籍捐赠链接,获得免费异步书籍。来加入我们吧!

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • php读取pdf数据,php pdf读取
  • php读取pdf数据,php pdf读取,PHP中使用mpdf 导出PDF文件的实现方法
  • kotlon协程,深入理解kotlin协程pdf,一文彻底搞懂Kotlin中的协程
  • 深入解析C#(第4版),深入解析css pdf,深入解析contentWindow, contentDocument
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf
  • java 反射机制原理与用法详解视频,java 反射机制原理与用法详解pdf,Java 反射机制原理与用法详解
  • ,,Java使用iTextPDF生成PDF文件的实现方法
  • ,,Python利用PyMuPDF实现PDF文件处理
  • 漫画算法小灰的算法之旅pdf,漫画算法2-小灰的算法进阶
  • devops和自动化运维实践 PDF,devops思想在运维方面的具体实践
  • pdf如何去除水印,pdf去水印的三种方法
  • 把a4的内容打印成a3小册子,a4的pdf文档如何打印成a3
  • nlp自然语言处理入门pdf,精通python自然语言处理 pdf
  • 容器docker基本操作,每天5分钟玩转docker容器技术 pdf
  • sklearn中文手册pdf下载,sklearn库模块及函数
  • 留言与评论(共有 条评论)
       
    验证码: