立即注册
查看: 530|回复: 0

[资料] C语言书籍分享:C Primer Plus (第6版)中文版

已绑定手机
发表于 2021-11-25 15:03:33 | 显示全部楼层 |阅读模式 来自 广东省深圳市
第1章 初识C语言
1.1 C语言的起源
1972年,贝尔实验室的丹尼斯·里奇(Dennis Ritch)和肯·汤普逊(Ken Thompson)在开发UNIX操作系统时设计了C语言。然而,C语言不完全是里 奇突发奇想而来,他是在B语言(汤普逊发明)的基础上进行设计。至于 B 语言的起源,那是另一个故事。C 语言设计的初衷是将其作为程序员使用的 一种编程工具,因此,其主要目标是成为有用的语言。 虽然绝大多数语言都以实用为目标,但是通常也会考虑其他方面。例 如,Pascal 的主要目标是为更好地学习编程原理提供扎实的基础;而BASIC 的主要目标是开发出类似英文的语言,让不熟悉计算机的学生轻松学习编 程。这些目标固然很重要,但是随着计算机的迅猛发展,它们已经不是主流 语言。然而,最初为程序员设计开发的C语言,现在已成为首选的编程语言 之一。

1.2 选择C语言的理由
在过去40多年里,C语言已成为最重要、最流行的编程语言之一。它的 成长归功于使用过的人都对它很满意。过去20多年里,虽然许多人都从C语 言转而使用其他编程语言(如,C++、Objective C、Java等),但是C语言仍 凭借自身实力在众多语言中脱颖而出。在学习C语言的过程中,会发现它的 许多优点(见图1.1)。下面,我们来看看其中较为突出的几点。

1.2.1 设计特性
C是一门流行的语言,融合了计算机科学理论和实践的控制特性。C语 言的设计理念让用户能轻松地完成自顶向下的规划、结构化编程和模块化设 计。因此,用C语言编写的程序更易懂、更可靠。

1.2.2 高效性
C是高效的语言。在设计上,它充分利用了当前计算机的优势,因此 C 程序相对更紧凑,而且运行速度很快。实际上,C 语言具有通常是汇编语言 才具有的微调控制能力(汇编语言是为特殊的中央处理单元设计的一系列内 部指令,使用助记符来表示;不同的 CPU 系列使用不同的汇编语言),可 以根据具体情况微调程序以获得最大运行速度或最有效地使用内存。

1.2.3 可移植性
C是可移植的语言。这意味着,在一种系统中编写的 C程序稍作修改或 不修改就能在其他系统运行。如需修改,也只需简单更改主程序头文件中的 少许项即可。大部分语言都希望成为可移植语言,但是,如果经历过把IBM PC BASIC程序转换成苹果BASIC(两者是近亲),或者在UNIX系统中运行 IBM大型机的FORTRAN程序的人都知道,移植是最麻烦的事。C语言是可移 植方面的佼佼者。从8位微处理器到克雷超级计算机,许多计算机体系结构都可以使用C编译器(C编译器是把C代码转换成计算机内部指令的程序)。 但是要注意,程序中针对特殊硬件设备(如,显示监视器)或操作系统特殊 功能(如,Windows 8或OS X)编写的部分,通常是不可移植的。 由于C语言与UNIX关系密切,UNIX系统通常会将C编译器作为软件包的 一部分。安装Linux时,通常也会安装C编译器。供个人计算机使用的C编译 器很多,运行各种版本的Windows和Macintosh(即, Mac)的PC都能找到 合适的C编译器。因此,无论是使用家庭计算机、专业工作站,还是大型 机,都能找到针对特定系统的C编译器。

1.2.4 强大而灵活
C语言功能强大且灵活(计算机领域经常使用这两个词)。例如,功能 强大且灵活的UNIX操作系统,大部分是用C语言写的;其他语言(如, FORTRAN、Perl、python、Pascal、LISP、Logo、BASIC)的许多编译器和 解释器都是用C语言编写的。因此,在UNIX机上使用FORTRAN时,最终是 由C程序生成最后的可执行程序。C程序可以用于解决物理学和工程学的问 题,甚至可用于制作电影的动画特效。

1.2.5 面向程序员
C 语言是为了满足程序员的需求而设计的,程序员利用 C 可以访问硬 件、操控内存中的位。C 语言有丰富的运算符,能让程序员简洁地表达自己 的意图。C没有Pascal严谨,但是却比C++的限制多。这样的灵活性既是优点 也是缺点。优点是,许多任务用C来处理都非常简洁(如,转换数据的格 式);缺点是,你可能会犯一些莫名其妙的错误,这些错误不可能在其他语 言中出现。C 语言在提供更多自由的同时,也让使用者承担了更大的责任。 另外,大多数C实现都有一个大型的库,包含众多有用的C函数。这些 函数用于处理程序员经常需要解决的问题。

1.2.6 缺点
人无完人,金无足赤。C语言也有一些缺点。例如,前面提到的,要享 受用C语言自由编程的乐趣,就必须承担更多的责任。特别是,C语言使用 指针,而涉及指针的编程错误往往难以察觉。有句话说的好:想拥有自由就 必须时刻保持警惕。 C 语言紧凑简洁,结合了大量的运算符。正因如此,我们也可以编写出 让人极其费解的代码。虽然没必要强迫自己编写晦涩的代码,但是有兴趣写 写也无妨。试问,除 C语言外还为哪种语言举办过年度混乱代码大赛[1]? 瑕不掩瑜,C语言的优点比缺点多很多。我们不想在这里多费笔墨,还 是来聊聊C语言的其他话题。

1.3 C语言的应用范围
早在20世纪80年代,C语言就已经成为小型计算机(UNIX系统)使用的 主流语言。从那以后,C语言的应用范围扩展到微型机(个人计算机)和大 型机(庞然大物)。如图1.2所示,许多软件公司都用C语言来开发文字处理 程序、电子表格、编译器和其他产品,因为用 C语言编写的程序紧凑而高 效。更重要的是,C程序很方便修改,而且移植到新型号的计算机中也没什 么问题。无论是软件公司、经验丰富的C程序员,还是其他用户,都能从C语言 中受益。越来越多的计算机用户已转而求助C语言解决一些安全问题。不一 定非得是计算机专家也能使用C语言。 20世纪90年代,许多软件公司开始改用C++来开发大型的编程项目。 C++在C语言的基础上嫁接了面向对象编程工具(面向对象编程是一门哲 学,它通过对语言建模来适应问题,而不是对问题建模以适应语言)。 C++几乎是C的超集,这意味着任何C程序差不多就是一个C++程序。学习C 语言,也相当于学习了许多C++的知识。
1.jpg
虽然这些年来C++和JAVA非常流行,但是C语言仍是软件业中的核心技 能。在最想具备的技能中,C语言通常位居前十。特别是,C 语言已成为嵌 入式系统编程的流行语言。也就是说,越来越多的汽车、照相机、DVD 播 放机和其他现代化设备的微处理器都用 C 语言进行编程。除此之外,C 语 言还从长期被FORTRAN独占的科学编程领域分得一杯羹。最终,作为开发 操作系统的卓越语言,C在Linux开发中扮演着极其重要的角色。因此,在进 入21世纪的第2个10年中,C语言仍然保持着强劲的势头。

1.4 计算机能做什么
在学习如何用C语言编程之前,最好先了解一下计算机的工作原理。这 些知识有助于你理解用C语言编写程序和运行C程序时所发生的事情之间有 什么联系。 现代的计算机由多种部件构成。中央处理单元(CPU)承担绝大部分的 运算工作。随机存取内存(RAM)是存储程序和文件的工作区;而永久内 存存储设备(过去一般指机械硬盘,现在还包括固态硬盘)即使在关闭计算 机后,也不会丢失之前储存的程序和文件。另外,还有各种外围设备(如, 键盘、鼠标、触摸屏、监视器)提供人与计算机之间的交互。CPU负责处理 程序,接下来我们重点讨论它的工作原理。 CPU 的工作非常简单,至少从以下简短的描述中看是这样。它从内存 中获取并执行一条指令,然后再从内存中获取并执行下一条指令,诸如此类 (一个吉赫兹的CPU一秒钟能重复这样的操作大约十亿次,因此,CPU 能以 惊人的速度从事枯燥的工作)。CPU 有自己的小工作区——由若干个寄存 器组成,每个寄存器都可以储存一个数字。一个寄存器储存下一条指令的内 存地址,CPU 使用该地址来获取和更新下一条指令。在获取指令后,CPU在 另一个寄存器中储存该指令,并更新第1个寄存器储存下一条指令的地址。 CPU能理解的指令有限(这些指令的集合叫作指令集)。而且,这些指令相 当具体,其中的许多指令都是用于请求计算机把一个数字从一个位置移动到 另一个位置。例如,从内存移动到寄存器。

1.5 高级计算机语言和编译器
高级编程语言(如,C)以多种方式简化了编程工作。首先,不必用数 字码表示指令;其次,使用的指令更贴近你如何想这个问题,而不是类似计 算机那样繁琐的步骤。使用高级编程语言,可以在更抽象的层面表达你的想 法,不用考虑CPU在完成任务时具体需要哪些步骤。例如,对于两数相加, 可以这样写: total = mine + yours; 对我们而言,光看这行代码就知道要计算机做什么;而看用机器语言写 成的等价指令(多条以数字码形式表现的指令)则费劲得多。但是,对计算 机而言却恰恰相反。在计算机看来,高级指令就是一堆无法理解的无用数 据。编译器在这里派上了用场。编译器是把高级语言程序翻译成计算机能理 解的机器语言指令集的程序。程序员进行高级思维活动,而编译器则负责处 理冗长乏味的细节工作。 编译器还有一个优势。一般而言,不同CPU制造商使用的指令系统和编 码格式不同。例如,用Intel Core i7 (英特尔酷睿i7)CPU编写的机器语言程 序对于ARM Cortex-A57 CPU而言什么都不是。但是,可以找到与特定类型 CPU匹配的编译器。因此,使用合适的编译器或编译器集,便可把一种高级 语言程序转换成供各种不同类型 CPU 使用的机器语言程序。一旦解决了一 个编程问题,便可让编译器集翻译成不同 CPU 使用的机器语言。

更多详细内容请下载附件查看
2021-11-25 15:03 上传
文件大小:
270 Bytes
下载次数:
0
附件售价:
2 RD币  购买记录
本地下载 立即购买

16RD supports Paypal , Payment is calculated at the exchange rate of the day. Unable to download please contact 18902843661 (WhatsApp OR wechat number)

关于一牛网在微软浏览器(Microsoft Edge、IE浏览器)警报通告&解决方案!(无法下载直接更换浏览器即可)

*附件为作者发布,与本站无关,如有侵权,请联系客服删除


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表