《C语言入门经典-C语言编程.ppt》由会员分享,可在线阅读,更多相关《C语言入门经典-C语言编程.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C入门经典(第入门经典(第4版)版)第第01章章 C语言编程语言编程 C C语言是一种功能强大、简洁的计算机语言,通过它可以编写程序,指挥语言是一种功能强大、简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务。我们可以利用计算机完成指定的任务。我们可以利用C C语言创建程序语言创建程序(即一组指令即一组指令),并让计,并让计算机依指令行事。算机依指令行事。用用C C语言编程并不难,本书将用浅显易懂的方法介绍语言编程并不难,本书将用浅显易懂的方法介绍C C语言的基础知识,语言的基础知识,读完本章,读者就可以编写第一个读完本章,读者就可以编写第一个C C语言程序了,其实语言程序了,其实
2、C C语言很简单。语言很简单。C入门经典(第入门经典(第4版)版)1.1 创建创建C程序程序 C C程序的创建过程有程序的创建过程有4 4个基本步骤或过程:编辑,编译,链接,执行。这个基本步骤或过程:编辑,编译,链接,执行。这些过程很容易完成些过程很容易完成(就像翻转手臂一样简单,而且可以随时翻转就像翻转手臂一样简单,而且可以随时翻转),首先介绍每,首先介绍每个过程,以及它们对创建个过程,以及它们对创建C C程序的作用程序的作用。uu 编辑编辑uu 编译编译uu 链接链接C入门经典(第入门经典(第4版)版)1.1.1 编辑编辑 编辑过程就是创建和修改编辑过程就是创建和修改C C程序的源代码程序
3、的源代码我们编写的程序指令称为源我们编写的程序指令称为源代码。有些代码。有些C C编译器带一个编辑器,可帮助管理程序。通常,编辑器是提供了编译器带一个编辑器,可帮助管理程序。通常,编辑器是提供了编写、管理、开发与测试程序的环境,有时也称为集成开发环境编写、管理、开发与测试程序的环境,有时也称为集成开发环境(缩写为缩写为IDE)IDE)。C入门经典(第入门经典(第4版)版)1.1.2 编译编译 编译器可以将源代码转换成机器语言,在编译的过程中,会找出并报告编译器可以将源代码转换成机器语言,在编译的过程中,会找出并报告错误。这个阶段的输入是在编辑期间产生的文件,常称为源文件。错误。这个阶段的输入是
4、在编辑期间产生的文件,常称为源文件。编译器能找出程序中很多无效或无法识别的错误,以及结构错误,例如编译器能找出程序中很多无效或无法识别的错误,以及结构错误,例如程序的某部分永远不会执行。编译器的输出结果称为对象代码程序的某部分永远不会执行。编译器的输出结果称为对象代码(object code)(object code),存放它们的文件称为对象文件存放它们的文件称为对象文件(object file)(object file),这些文件的扩展名在,这些文件的扩展名在WindowsWindows环境环境中通常是中通常是.objobj,在,在Linux/UNIXLinux/UNIX环境中通常是环境中通
5、常是.o.o。编译器可以在转换过程中找出。编译器可以在转换过程中找出几种不同类型的错误,它们大都会阻止对象文件的创建几种不同类型的错误,它们大都会阻止对象文件的创建 C入门经典(第入门经典(第4版)版)1.1.3 链接链接 链链接接器器(linker)(linker)将将源源代代码码文文件件中中将将编编译译器器产产生生的的各各种种模模块块组组合合起起来来,再再从从C C语语言言提提供供的的程程序序库库中中添添加加必必要要的的代代码码模模块块,将将它它们们组组合合成成一一个个可可执执行行的的文文件件。链链接接器器也也可可以以检检测测和和报报告告错错误误,例例如如,遗遗漏漏了了程程序序的的某某个个
6、部部分分,或或者者引引用用了了一一个个根本不存在的库组件。根本不存在的库组件。C入门经典(第入门经典(第4版)版)1.1.4 执行执行 执行阶段就是当成功完成了前述执行阶段就是当成功完成了前述3 3个过程后,运行程序。但是,这个阶段个过程后,运行程序。但是,这个阶段可能会出现各种错误,包括输出错误及什么也不做,甚至使计算机崩溃。不管可能会出现各种错误,包括输出错误及什么也不做,甚至使计算机崩溃。不管出现哪种情况,都必须返回编辑阶段,检查并修改源代码。出现哪种情况,都必须返回编辑阶段,检查并修改源代码。C入门经典(第入门经典(第4版)版)1.2 创建第一个程序创建第一个程序 本节先浏览一下创建本
7、节先浏览一下创建C C语言程序的流程,从输入代码到执行程序的所有语言程序的流程,从输入代码到执行程序的所有4 4个步骤。在这个阶段,若不了解所键入的代码信息,别担心,笔者会解释每一个步骤。在这个阶段,若不了解所键入的代码信息,别担心,笔者会解释每一个步骤。个步骤。C入门经典(第入门经典(第4版)版)1.3 编辑第一个程序编辑第一个程序 我们可以修改程序,在屏幕上输出其他信息。例如可以将程序改成:我们可以修改程序,在屏幕上输出其他信息。例如可以将程序改成:/*Program 1.2 Your Second C Program*/*Program 1.2 Your Second C Program
8、*/#include#include intint main(voidmain(void)printf(Ifprintf(If at first you dont succeed at first you dont succeed,trytry,trytry,try again!)try again!);return 0;return 0;C入门经典(第入门经典(第4版)版)1.4 处理错误处理错误 犯错乃人之常情,没什么难为情的。幸好计算机一般不会出错,而且非犯错乃人之常情,没什么难为情的。幸好计算机一般不会出错,而且非常擅长于找出我们犯的错误。编译器会列出在源代码中找到的一组错误信息常擅长
9、于找出我们犯的错误。编译器会列出在源代码中找到的一组错误信息(甚至比我们想象的多甚至比我们想象的多),通常会指出有错误的语句。此时,我们必须返回编辑,通常会指出有错误的语句。此时,我们必须返回编辑阶段,找出有错误的代码并更正。阶段,找出有错误的代码并更正。有时一个错误会使后面本来正确的语句也出现错误。这多半是程序的其有时一个错误会使后面本来正确的语句也出现错误。这多半是程序的其他部分引用了错误语句定义的内容所造成的。当然,定义语句有错,但被定义他部分引用了错误语句定义的内容所造成的。当然,定义语句有错,但被定义的内容不一定有错的内容不一定有错。C入门经典(第入门经典(第4版)版)1.5 剖析一
10、个简单的程序剖析一个简单的程序 编写并编译了第一个程序后,下面是另一个非常类似的例子,了解各行编写并编译了第一个程序后,下面是另一个非常类似的例子,了解各行代码的作用:代码的作用:/*Program 1.3 Another Simple C Program-Displaying a Quotation*/*Program 1.3 Another Simple C Program-Displaying a Quotation*/#include#include intint main(voidmain(void)printf(Bewareprintf(Beware the Ides Of Mar
11、ch!)the Ides Of March!);return 0;return 0;。uu 注释注释uu 预处理命令预处理命令uu 定义定义mainmain()函数()函数u 关键字关键字uu 函数体函数体uu 输出信息输出信息u 参数参数uu 控制符控制符C入门经典(第入门经典(第4版)版)1.5.1 注释注释 上述示例的第一行代码如下:上述示例的第一行代码如下:/*Program 1.3 Another Simple C Program-Displaying a Quotation*/*Program 1.3 Another Simple C Program-Displaying a Qu
12、otation*/这不是程序代码,因为它没有告诉电脑执行操作,它只是一个注释,告诉阅读这不是程序代码,因为它没有告诉电脑执行操作,它只是一个注释,告诉阅读代码的人,这个程序要做什么。位于代码的人,这个程序要做什么。位于/*/*和和*/之间的任意文本都是注释。只要编之间的任意文本都是注释。只要编译器在源文件中找到译器在源文件中找到/*/*,就忽略它后面的内容,一直到表示注释结束的,就忽略它后面的内容,一直到表示注释结束的*/为止。为止。/*/*可以和可以和*/放在同一行代码上,也可以放在不同的代码行上。放在同一行代码上,也可以放在不同的代码行上。C入门经典(第入门经典(第4版)版)1.5.2 与
13、处理命令与处理命令 下面的代码行:下面的代码行:#include#include /*This is a preprocessor directive*/*This is a preprocessor directive*/严格说来,它不是可执行程序的一部分,但它很重要,事实上程序没有严格说来,它不是可执行程序的一部分,但它很重要,事实上程序没有它是不执行的。符号它是不执行的。符号#表示这是一个预处理指令表示这是一个预处理指令(preprocessing directive)(preprocessing directive),告,告诉编译器在编译源代码之前,要先执行一些操作。编译器在编译过程开
14、始之前诉编译器在编译源代码之前,要先执行一些操作。编译器在编译过程开始之前的预处理阶段处理这些指令。预处理指令相当多,大多放于程序源文件的开头的预处理阶段处理这些指令。预处理指令相当多,大多放于程序源文件的开头 C入门经典(第入门经典(第4版)版)1.5.3 定义定义main()函数()函数 函数是两个括号之间执行某组操作的一段代码。每个函数是两个括号之间执行某组操作的一段代码。每个C C程序都由一个或多程序都由一个或多个函数组成,每个个函数组成,每个C C程序都必须有一个程序都必须有一个main()main()函数函数因为每个程序总是从这因为每个程序总是从这个函数开始执行。因此假定创建、编译
15、、链接了一个名为个函数开始执行。因此假定创建、编译、链接了一个名为progname.exeprogname.exe的文的文件。执行它时,操作系统会调用这个程序的件。执行它时,操作系统会调用这个程序的main()main()函数。函数。C入门经典(第入门经典(第4版)版)1.5.4 关键字关键字 在在C C语言中,关键字是有特殊意义的字,所以在程序中不能将关键字用于语言中,关键字是有特殊意义的字,所以在程序中不能将关键字用于其他目的。关键字也称为保留字。在前面的例子里,其他目的。关键字也称为保留字。在前面的例子里,intint就是一个关键字,就是一个关键字,voidvoid和和returnret
16、urn也是关键字。也是关键字。C C语言有许多关键字,我们在学习语言有许多关键字,我们在学习C C语言的过程中,将逐语言的过程中,将逐渐熟悉这些关键字。附录渐熟悉这些关键字。附录C C列出了完整的列出了完整的C C语言关键字表。语言关键字表。C入门经典(第入门经典(第4版)版)1.5.5 函数体函数体 C入门经典(第入门经典(第4版)版)1.5.6 输出信息输出信息 例子中的例子中的main()main()函数体包含了函数体包含了个调用个调用printfprintf()()函数的语句:函数的语句:printf(Bewareprintf(Beware the Ides of March!);/*
17、This line displays a quotation*/the Ides of March!);/*This line displays a quotation*/printfprintf()()是是个标准的库函数,它将引号内的信息输出到屏幕上,在这个例个标准的库函数,它将引号内的信息输出到屏幕上,在这个例子里,调用这个函数会显示引号内的一段警示语:双引号内的字符串称为字符子里,调用这个函数会显示引号内的一段警示语:双引号内的字符串称为字符串字面量。注意这行代码用分号作为结尾。串字面量。注意这行代码用分号作为结尾。C入门经典(第入门经典(第4版)版)1.5.7 参数参数 包含在函数名包
18、含在函数名(如上面语句中的如上面语句中的printfprintf()()函数函数)后的圆括号内的项称为参数,后的圆括号内的项称为参数,它指定要传送给函数的数据。当传送给函数的参数多于一个时,要用逗号分开。它指定要传送给函数的数据。当传送给函数的参数多于一个时,要用逗号分开。在上面的例子中,函数的参数是双引号内的文本字符串。如果不喜欢例子中引在上面的例子中,函数的参数是双引号内的文本字符串。如果不喜欢例子中引号内的文本,可以改用自己想输出的句子。例如,使用马克白号内的文本,可以改用自己想输出的句子。例如,使用马克白(Macbeth)(Macbeth)的一的一句话:句话:printf(Outpri
19、ntf(Out,damned Spot!Out I say!);damned Spot!Out I say!);修改源代码后,必须再次编译及链接程序,才可执行。修改源代码后,必须再次编译及链接程序,才可执行。C入门经典(第入门经典(第4版)版)1.5.8 控制符控制符 反斜杠反斜杠()()在字符串里有特殊的意义,它表示转义序列的开始。转义序列可在字符串里有特殊的意义,它表示转义序列的开始。转义序列可以在字符串中插入无法指定的字符,例如制表符及换行,或编译器在某些情况以在字符串中插入无法指定的字符,例如制表符及换行,或编译器在某些情况下会混淆的字符,例如双引号一般用于界定字符串。反斜杠后面的字符
20、表示是下会混淆的字符,例如双引号一般用于界定字符串。反斜杠后面的字符表示是哪种转义序列。在这个例子里,哪种转义序列。在这个例子里,n n表示换行。还有其他许多转义序列。显然,表示换行。还有其他许多转义序列。显然,反斜杠是有特殊意义的,所以需要一种方式在字符串中指定反斜杠。为此,应反斜杠是有特殊意义的,所以需要一种方式在字符串中指定反斜杠。为此,应使用两个反斜杠使用两个反斜杠()()。同样,如果要输出双引号,就用。同样,如果要输出双引号,就用 C入门经典(第入门经典(第4版)版)1.6 用用C语言开发程序语言开发程序 如果读者从未写过程序,对如果读者从未写过程序,对C C语言开发程序的过程就不会
21、很清楚,但它和语言开发程序的过程就不会很清楚,但它和我们日常生活的许多事务是相同的,万事开头难。一般首先大致确定要实现的我们日常生活的许多事务是相同的,万事开头难。一般首先大致确定要实现的目标,接着把该目标转变成比较准确的规范。有了这个规范后,就可以制订达目标,接着把该目标转变成比较准确的规范。有了这个规范后,就可以制订达到最终目标的一系列步骤了。就好比光知道要盖房子是不够的,还得知道需要到最终目标的一系列步骤了。就好比光知道要盖房子是不够的,还得知道需要盖什么样的房子,它有多大,用什么材料,要盖在哪里。这种详细规划也需要盖什么样的房子,它有多大,用什么材料,要盖在哪里。这种详细规划也需要运用
22、到编写程序上运用到编写程序上。uu 了解问题了解问题uu 详细设计详细设计uu 实施实施u 测试测试C入门经典(第入门经典(第4版)版)1.6.1 了解问题了解问题 第一步是弄清楚要做什么。在不清楚应提供什么设施:多少间卧房、多第一步是弄清楚要做什么。在不清楚应提供什么设施:多少间卧房、多少间浴室、各房间多大等等之前就开始建造房子,会有不知所措之感。所有这少间浴室、各房间多大等等之前就开始建造房子,会有不知所措之感。所有这些都会影响建造房子所需的材料和工作量,从而影响整个房子的成本。一般来些都会影响建造房子所需的材料和工作量,从而影响整个房子的成本。一般来说,在满足需求和完成项目的有限资金、人
23、力及时间之间总会达成某种一致。说,在满足需求和完成项目的有限资金、人力及时间之间总会达成某种一致。C入门经典(第入门经典(第4版)版)1.6.2 详细设计详细设计 要建造房子,必须有详细的计划。这些计划能让建筑工人按图施工,并要建造房子,必须有详细的计划。这些计划能让建筑工人按图施工,并详细描述房子如何建造详细描述房子如何建造具体的尺寸、要使用的材料等。还需要确定何时完具体的尺寸、要使用的材料等。还需要确定何时完成什么工作。例如,在砌墙之前须先挖地基,所以这个计划必须把工作分为可成什么工作。例如,在砌墙之前须先挖地基,所以这个计划必须把工作分为可管理的单元,以便执行起来井然有序。管理的单元,以
24、便执行起来井然有序。C入门经典(第入门经典(第4版)版)1.6.3 实施实施 有了房子的详细设计,就可以开始工作了。每组建筑工人必须按照进度有了房子的详细设计,就可以开始工作了。每组建筑工人必须按照进度完成他们的工作。在下一阶段开始前,必须先检查每个阶段是否正确完成。省完成他们的工作。在下一阶段开始前,必须先检查每个阶段是否正确完成。省略了这些检查,将可能导致整栋房子倒塌。略了这些检查,将可能导致整栋房子倒塌。当然,假使程序很大,可以一次编写当然,假使程序很大,可以一次编写部分。一个部分完成后,再写下部分。一个部分完成后,再写下部分。每个部分都要基于详细的设计规范,在进行下一个部分之前,应尽可
25、部分。每个部分都要基于详细的设计规范,在进行下一个部分之前,应尽可能详细地检查每个部分的功能。这样,程序就会逐步完成预期的任务能详细地检查每个部分的功能。这样,程序就会逐步完成预期的任务 C入门经典(第入门经典(第4版)版)1.6.4 测试测试 房房子子完完成成了了,还还要要进进行行许许多多测测试试:排排水水设设备备、水水电电设设施施、暖暖气气等等。任任何何部部分分都都有有可可能能出出问问题题,这这些些问问题题必必须须解解决决。这这有有时时是是一一个个反反复复的的过过程程,一一个个地地方方的的问题可能会造成其他地方出问题。问题可能会造成其他地方出问题。C入门经典(第入门经典(第4版)版)1.7
26、 函数及模块化编程函数及模块化编程 到目前为止,到目前为止,“函数函数”这个词已出现过好几次了,如这个词已出现过好几次了,如main()main()、printfprintf()()、函、函数体等。下面将深入研究函数是什么,为什么它们那么重要。数体等。下面将深入研究函数是什么,为什么它们那么重要。大多数编程语言大多数编程语言(包含包含C C语言语言)都提供了一种方法,将程序切割成多个段,都提供了一种方法,将程序切割成多个段,各段都可以独立编写。在各段都可以独立编写。在C C语言中,这些段称为函数。一个函数的程序代码与语言中,这些段称为函数。一个函数的程序代码与其他函数是相互隔绝的。函数与外界有
27、一个特殊的接口,可将信息传进来,也其他函数是相互隔绝的。函数与外界有一个特殊的接口,可将信息传进来,也可将函数产生的结果传出去。这个接口在函数的第一行即在函数名的地方指定。可将函数产生的结果传出去。这个接口在函数的第一行即在函数名的地方指定。C入门经典(第入门经典(第4版)版)1.8 常见错误常见错误 错误是生活中的一部分。用错误是生活中的一部分。用C C语言编写计算机程序时,必须用编译器将源语言编写计算机程序时,必须用编译器将源代码转换成机器码,所以必须用非常严格的规则控制使用代码转换成机器码,所以必须用非常严格的规则控制使用C C语言的方式。漏掉语言的方式。漏掉一个该有的逗点,或添加不该有
28、的分号,编译器都不会将程序转换成机器码。一个该有的逗点,或添加不该有的分号,编译器都不会将程序转换成机器码。即使实践了多年,程序中也很容易出现输入错误。这些错误可能在编译即使实践了多年,程序中也很容易出现输入错误。这些错误可能在编译或链接程序时找出。但有些错误可能使程序执行时,表面上看起来正常,却不或链接程序时找出。但有些错误可能使程序执行时,表面上看起来正常,却不定时地出错,这就需要花很多时间来跟踪错误了定时地出错,这就需要花很多时间来跟踪错误了。C入门经典(第入门经典(第4版)版)1.9 要点要点C入门经典(第入门经典(第4版)版)1.10 小结小结 本章编写了几个本章编写了几个C C程序。我们学习了许多基础知识,本章的重点是介绍一程序。我们学习了许多基础知识,本章的重点是介绍一些基本概念,而不是详细探讨些基本概念,而不是详细探讨C C程序语言。现在读者应该对编写、编译及链接程序语言。现在读者应该对编写、编译及链接程序很有信心了。也许读者目前对如何构建程序很有信心了。也许读者目前对如何构建C C程序只有模糊的概念。以后学了程序只有模糊的概念。以后学了更多的更多的C C语言知识,编写了一些程序后,就会清楚明白了语言知识,编写了一些程序后,就会清楚明白了。