C Primer Plus第五版学习笔记.docx
- 文档编号:2884421
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:27
- 大小:705.11KB
C Primer Plus第五版学习笔记.docx
《C Primer Plus第五版学习笔记.docx》由会员分享,可在线阅读,更多相关《C Primer Plus第五版学习笔记.docx(27页珍藏版)》请在冰豆网上搜索。
CPrimerPlus第五版学习笔记
CPrimerPlus(第五版)学习笔记
第一章概览
1.1C语言的起源
记住DennisRitchie和KenThomson。
是在设计UNIX操作系统的时候开发的。
1.2使用C语言的理由
C是一种融合了控制特性的现代语言,而我们已发现在计算机科学的理论和实践中,控制特性是很重要的。
其设计使得用户可以自然地采用自顶向下的规划、结构化的编程,以及模块化的设计。
这种做法使得编写出的程序更可靠、更易懂。
C是一种高效的语言。
C程序往往很紧凑且运行速度快。
C是一种可移植语言。
由于C与UNIX的紧密联系,UNIX系统通常都带有一个C编译器作为程序包的一部分。
Linux中同样也包括一个C编译器。
C强大而又灵活(计算机世界中经常使用的两个词)。
C面向编程人员的需要。
它允许您访问硬件,并可以操纵内存中的特定位。
它具有丰富的运算符供选择,让您能够简洁地表达自己的意图。
多数C实现都有一个大型的库,其中包含有用的C函数。
这些函数能够处理编程人员通常会面对的许多需求。
C的简洁性与其丰富的运算符相结合,使其可能会编写出极难理解的代码。
没有谁强迫您编写含糊难懂的代码,但存在这样的可能性。
试问,除C之外还有哪种语言存在一年一度的“含糊代码”(ObfuscatedCode)竞赛呢?
1.3C语言的发展方向
不管C++和Java这些较新的语言如何流行,C在软件产业仍然是一种重要的技能,在最想获得的技能中,它一般都列在前10名。
特别是在嵌入式系统的编程中,C已开始流行。
也就是说,它将用来为汽车、照相机、DVD播放器和其他现代化设备中逐渐普及的微处理器编程。
同样,C已开始进入长期以来一直属于FORTRAN的科学编程领域。
最后,由于它是一种适合用来开发操作系统的语言,C在Linux的开发中也扮演着重要的角色。
1.4计算机工作的基本原理
CPU的工作非常简单,至少在我们所做的这一简短描述中是这样的。
它从内存中获取一个指令并执行该指令,然后从内存中获取下一个指令并执行。
一个千兆CPU可以再一秒钟内进行大约一亿次这样的操作,然后CPU能以惊人的速度来从事其枯燥的工作。
CPU有自己的小工作区,该工作区由若干个寄存器(register)组成,每个寄存器可以保存一个数。
一个寄存器保存下一条指令的内存地址,CPU使用该信息获取下一条指令。
获取一条指令后,CPU在另一个寄存器中保存该指令并将第一个寄存器的值更新为下一条指令的地址。
CPU只能理解有限的指令(指令集)。
还有,这些指令是想到具体的,其中许多指令要求计算机将一个数从一个位置移动到另一个位置,例如,从内存单元移到寄存器。
1.5高级计算机语言和编译器
采用编译器还有另一个好处。
一般来说,每种计算机在设计上都有其自身特有的机器语言。
所以用机器语言为一个IntelPentiumCPU编写的程序对MotorolaPowerPCCPU来说什么都不是。
但您可以将编译器匹配一种特定的机器语言。
您解决一个编程问题只须一次,然后可以让编译器将该解决方案解释为各种机器语言。
1.6使用C语言的7个步骤
第一步定义程序目标
第二步设计程序
第三步编写代码
第四步编译
编译器是一个程序,其工作是将源代码转换为可执行代码。
可执行代码是用计算机的本机语言或机器语言表示的代码。
这种语言是由数字代码表示的详细指令组成。
不同计算机具有不同的机器语言,C编译器用来将C语言转换成特定的机器语言。
C编译器还从C的库中向最终程序加入代码。
库中包含着许多标准例程供您使用,例如printf()和scanf()。
(更准确地说,是一个被称为链接器(linker)的程序将库例程引入的,但在多数系统上,编译器为您运行链接器。
)最后的结果是,形成一个包含计算机可以理解的代码并且您能够运行的可执行文件。
第五步运行程序
第六步测试和调试程序
第七部维护和修改程序
1.7编程机制
用C语言编写一个程序时,您将编写的内容保存在一个被称为源代码文件的文本文件中。
大多数C系统,包括我们提到的那些,都需要该文件的名称以.c结尾。
该名称还应该满足特定计算机操作系统的需要。
C编程的基本策略是使用程序将源代码文件转换为可执行文件,此文件包含可以运行的机器语言代码。
C分两步完成这一工作:
编译和链接。
编译器将源代码转换为中间代码,链接器将此中间代码与其他代码相结合来生成可执行文件。
C使用被划分为两部分的这一方法使程序便于模块化。
您可以分别编译各个模块,然后使用链接器将编译过的模块结合起来。
这样,如果需要改变一个模块,则不必重新编译所有其他模块。
同时,链接器将您的程序与预编译的库代码结合起来。
中间文件的形式多种选择。
最一般的选择,同时也是我们这里讲述的实现方式所采取的选择,是将源代码转换为机器语言代码,将结果放置在一个目标代码文件(或简称为目标文件)中(这里假定您的源代码由单个文件组成)。
虽然目标文件包含机器语言代码,但该文件还不能运行。
目标文件包含源代码的转换结果,但它还不是一个完整的程序。
目标代码文件中所缺少的第一个元素是一种叫做启动代码(strat-upcode)的东西,此代码相当于您的程序和操作系统之间的接口。
例如,您可以在DOS或Linux下运行一个IBMPC兼容机,在两种情况中硬件是相同的,所以都会使用同样的目标代码,但DOS与Linux要使用不同的启动代码,因为这两种系统处理程序的方式是不同的。
所缺少的第二个元素是库例程的代码。
几乎所有C程序都利用标准C库中所包含的例程(成为函数)。
链接器的作用就是讲这三个元素(目标代码、系统的标准启动代码和库代码)结合在一起,并将它们存放在单个文件,即可执行文件中。
对库代码来说,链接器只从库中提取您所使用的函数所需要的代码。
UNIX下使用cc编译器,Linux下使用gcc,Windows系统下使用集成开发环境。
1.8语言标准
随着C的发展和更加广泛地用于更多种类的系统上,使用C的群体意识到它需要一个更加全面、新颖和严格的标准。
为满足这一要求,美国国家标准化组织(ANSI)在1983年设立了一个委员会(X3J11)以发展一个新的标准,该标准于1989年正式采用。
这个新标准(ANSIC)定义了语言和一个标准C库。
国际标准化组织于1990年采用了一个C标准(ISOC)。
ISOC和ANSIC实质上是同一个标准。
ANSI/ISO标准的最终版本通常被称为C89或C90.然而,因为ANSI版本是首先出现的,所以人们通常使用ANSIC这一术语。
1994年,修订标准的工作开始了,这一努力的结果是产生了C99标准。
一个联合ANSI/ISO委员会(即C9X委员会)签署了C90标准的最初原则,包括保持语言短小而简单。
他们的意图不是为语言添加新的特性,而是为了满足新的目标。
新目标之一是支持国际化编程,例如,提供了处理国际字符集的方法。
第二个目标是“整理现有的惯例以解决明显的缺点”。
因此,在遇到需要将C移植到64位处理器时,委员会根据在真实生活中处理问题的人的经验来添加标准。
第三个目标是针对科学和工程项目的重要数字计算改进C的适应能力。
第二章C语言概述
2.1C语言的一个简单实例
程序中的“\n”和“%d”起什么作用?
2.2实例说明
对程序的分析:
第一遍(快速简介)和第二遍(程序细节)。
通常,C编译器在编译前要对源代码做一些准备工作:
这称为预处理。
在C世界里,人们称出现在文件顶部的信息集合为头(header),C实现通常都带有许多头文件。
最重要的是头文件包括了建立最终的可执行程序时编译器需要用到的信息。
例如,它们可以定义常量,或者说明函数名以及该函数如何使用。
但是函数的实际代码被包含在一个预编译的库文件中,而不是在头文件中。
编译器的链接部分负责找到您所需要的库代码。
简言之,头文件指引编译器把您的程序正确组合在一起。
一、#include指示和头文件
二、main()函数
三、注释
四、花括号、程序体和代码块
五、声明
在C语言中,所有变量都必须在使用之前定义。
折旧意味着您必须提供程序中要用到的所有变量名的列表,并且指出每个变量的数据类型。
声明变量被认为是一个好的编程技术,在C语言中必须这样做。
C语言可以处理多个数据种类(或类型),例如整数、字符和浮点数。
把一个变量声明为整数类型或字符类型是计算机正确地存储、获取和解释该数据的基本前提。
声明变量的四点好处:
把所有变量放在一起,可以让读者更容易掌握程序的内容。
在您开始编写程序之前,考虑一下需要声明的变量会促使您做一些计划工作。
声明变量可以帮助避免程序中出现一类很难发现的细微错误,即变量名的错误拼写。
如果您没有声明所有变量,将不能编译您的C程序。
六、赋值
七、printf()函数
八、return语句
Return语句是程序的最后一个语句。
在intmain(void)中int表示main()函数的返回值应该是一个整数。
C标准要求main()这样做。
带有返回值的C语言函数要使用一个return语句,该语句包括关键字return,后面紧跟着要返回的值,然后是一个分号。
对于main()函数来说,如果您漏掉了return语句,则大多数编译器将对您的疏忽提出警告,但仍将编译该程序。
此时,您可以暂时把main()中的return语句看作是保持逻辑连贯性所需的内容。
但对于某些操作系统(包括DOS和UNIX)而言,它有实际的用途。
2.3一个简单程序的结构
预处理指令+带有参数的函数名+声明语句+赋值语句+函数语句
2.4使程序可读的技能
选择有意义的变量名和使用注释。
使用空行分隔一个函数的概念上的多个部分。
每个语句使用一行。
分号可以告诉编译器一个语句在哪里结束和下一个语句在哪里开始。
2.5更进一步
Printf()的使用括号内第二处输出的值不必是一个变量,它只需结果值具有合适类型的某个式子。
2.6多个函数
C90标准添加了原型,原型是一种声明的形式,用于告诉编译器您正在用一个特殊的函数。
它也指明了函数的属性。
2.7调试
如果不遵循C语言的规则就会犯语法错误。
(拼写错误就不说了)
语义错误。
调试器是一种程序,让您能够一步一步地运行另一个程序并检查该程序的变量值。
不同的调试器具有不同的易用性和复杂度。
较高级的调试器可以显示出正在执行的源代码行。
这对于有多条可选执行路径的程序来说是非常方便的,因为可以很容易知道执行了哪条特殊路径。
如果您的编译器带有调试器,那么现在请花点时间去学会怎么用它。
2.8关键字和保留标识符
如果试图把一个关键词用作变量名,编译器把它作为一个语法错误捕获到。
还有一些您不该用的其他字符,称为保留标识符。
因为它们是合法的名字,所以不引起语法错误。
然而,C语言已使用它们或者保留使用它们的权利,所以如果您用这些标识符表示其他意思就可能引起问题。
保留标识符包括那些以下划线字符开始的标识符和标准库函数的名字。
2.9关键概念
作为程序员,您的工作就是在一个编译器(由C标准指导)能成功处理的框架内表达出您关于程序应采取何种行为的想法。
第三章数据和C
3.1示例程序
交互性方法使程序更为有趣。
3.2变量与常量数据
变量与常量的区别在于,变量的值可以在程序执行过程中变化与指定,而常量则不可以。
3.3数据:
数据类型关键字
对于人,整数和浮点数的区别在于它们的书写。
对于计算机,区别在于它们的存储方式。
浮点数表示法将一个数分为小数部分和指数部分并分别存储。
3.4C数据类型
初始化变量就是为变量赋一个初始值。
C语言中,可以在声明语句中初始化变量,即在变量名后跟上赋值运算符(=)和要赋给变量的值。
声明语句为变量创建、标定存储空间并为其指定初始值。
在C中,由专门的前缀指明哪一种进制。
前缀0x或者0X表示使用十六进制值,所以16用十六进制表示为0x10或0X10.与之类似,前
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Primer Plus第五版学习笔记 Plus 第五 学习 笔记