第l章 C语言概述.doc
《第l章 C语言概述.doc》由会员分享,可在线阅读,更多相关《第l章 C语言概述.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第l章 C语言概述C语言是国际上广泛流行的计算机高级语言,既可以用来编写系统软件,也可以用来编写应用软件。首先介绍计算机语言和程序执行过程。1.1 计算机语言与程序1程序通常,完成一项复杂的任务,需要进行一系列的具体工作。这些按一定的顺序安排的工作即操作序列,就称为程序(program)。例如,学校里开会的程序步骤: 宣布大会开始。 介绍出席大会的领导。 领导讲话 宣布大会结束。 可见,程序的概念是很普遍的。对于计算机来说,计算机要完成某种数据处理任务,我们可以设计计算机程序,即规定一组操作步骤,使计算机按该操作步骤执行,完成该数据处理任务。在为计算机设计程序时,必须用特定的计算机语言描述。用
2、计算机语言设计的程序, 即为计算机程序。程序就是计算机为完成某一个任务所必须执行的一系列指令的集合。2计算机语言 计算机系统所能接受、理解和执行的语言称为计算机语言(computer language)。计算机语言主要分为三种类型:机器语言、汇编语言和高级语言。 (1)机器语言 机器语言(machine language)中的基本元素是“0”和“1”。由“0”和“1”组成的一个二进制编码,就表示一条机器指令(machine instruction),它使计算机完成一个简单的操作。不同型号的计算机系统,其指令的表示形式和范围是不同的。每种型号的机器指令,都有自己的编码格式,组成自己的指令集合,称
3、为计算机的指令系统,一般由数百条指令组成,每条指令使计算机完成一种简单的操作。用机器指令编写的程序,就是机器语言程序,它是计算机惟一能够直接识别并执行的程序。(2)汇编语言 汇编语言(assembly language)是在机器语言基础上,引入了助记符、符号数来表示机器指令中的操作码和操作数地址。助记符通常用英文单词缩写,便于记忆。使用汇编语言编写的程序称为汇编语言源程序(source program)。(3)高级语言高级语言(high-level language)是一种用户容易理解和掌握的计算机语言,它与人们习惯的自然语言和数学语言很接近,相对汇编语言来说容易掌握和使用。使用高级语言编写的
4、程序称为高级语言源程序。随着计算机技术的发展,用于各种不同领域的高级语言相继间世。C语言,以它自身特有的优点成为编写系统软件和应用软件较理想的计算机高级语言。3程序执行 并不是所有用计算机语言编写的程序,计算机都能立即执行。计算机只能直接识别执行机器语言程序或称目标程序(object program)。而用汇编语言或高级语言编写的程序,都不能直接在计算机上执行。汇编语言源程序需要通过一个称为汇编程序(assembler)的软件,将汇编语言源程序翻译成计算机可以直接识别运行的机器语言程序。对于用高级语言编写的源程序,需要经过一个称为“翻译程序”的软件将其翻译成计算机能够直接识别的机器语言程序,才
5、能执行。通常源程序中的每一条语句要翻译成一组机器指令。翻译程序有两种,即编译程序(compiler)和解释程序(interpreter)。每种高级语言都有自己的翻译程序,用C语言编写的源程序,首先通过C编译程序,将整个源程序翻译成机器语言程序,然后还要通过连接程序生成可执行程序,才能在机器上运行,如图1.1所示。图1.1 C源程序的执行过程下面简要介绍C语言的发展简史。1.2 C语言的发展历史C语言是为了描述UNIX操作系统,由美国贝尔实验室在B语言的基础上发展起来的。1969年,贝尔实验室的研究人员Ken Thompson和Dennis M. Ritchie合作用汇编语言编制了UNIX操作系
6、统。1970年,Ken Thompson为了提高UNIX的可读性和可移植性,在一种叫做BCPL语言的基础上开发了一种新的语言,称为B语言。由于B语言存在一些缺点,无法支持多种数据类型,因此没有流行起来。1972年,Denis M. Ritchie在B语言的基础上设计出了C语言。1973年,Ken Thompson和 Dennis M. Ritchie合作把原来用汇编语言编写的UNIX操作系统的90%以上的部分用C语言改写。与此同时,C语言的编译程序也被移植到IBM 360/370,Honeywell 11以及VAX-l1/780等多种计算机上,迅速成为应用最广泛的系统程序设计语言。1978年,
7、Brian W. Kernighan和Dennis M. Ritchie(K&R)合著出版了一本名为“The C Programming Language”(C程序设计语言)的书,这本书流行很广,被公认为C语言的标准版本,称为标准C。1983年,美国国家标准化协会ANSI(American National Standard Institute)根据C语言的发展制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。国际标准化组织ISO(International Standard Organization)于1990年采用了一个C标准(ISO C)。ISO C和ANSI
8、C实质上是同一个标准。ANSI/ISO标准的最终版本通常被称为C90。然而,因为ANSI版本是首先出现的,所以人们通常使用ANSI C这一术语。20世纪90年代,虽然大多数程序员都在忙于C+标准的开发,但C语言并没有停滞不前。新的标准在不断开发,最终形成了1999年的C语言标淮,通常称为C99。C99基本保留了C90的全部特性,C99标准化委员会致力于两个主要方面:增加一些数据库函数和开发一些专用的但高度创新的新特性,例如可变长度的数组和restrict指针修饰符。这些改进再一次把C语言推到了计算机语言开发的前沿。结果是C99的修改保持了C语言的本质特性,C语言继续是一种简短、清楚、高效的语言
9、。1.3 C语言的特点C语言是一种通用、灵活、结构化和使用普遍的计算机高级语言,能完成用户想实现的任何任务,既可用来编写系统软件,也可用来编写应用软件。和其他高级语言比较,C语言有如下主要特点。 (1)C语言简洁紧凑 C语言一共有32个关键字,9种控制语句,书写形式自由,使用方便、灵活。 (2)C语言介于汇编语言与高级语言之间C语言既像汇编语言那样允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,直接对硬件访问;也有高级语言的面向用户、容易记忆、容易学习和易于书写的特点。 (3)C语言是一种结构化语言 C语言具有结构化语言所规定的三种基本结构。C语言用函数作为结构化程序设计的实现
10、工具,实现程序的模块化。 (4)C语言有丰富的数据类型 C语言具有现代化高级语言的各种数据类型;用户能自己扩充数据类型,实现各种复杂的数据结构,完成用于具体问题的数据描述。尤其是指针类型,它是C语言的一大特色,灵活的指针操作,能够高效处理各种数据。 (5)C语言有丰富的运算符 ANSI C提供34种运算符,灵活使用这些运算符,可以编写各种各样的表达式,表达能力很强,表达式的学习是学习C语言的重点和难点之一。 (6)C语言具有较高的移植性 C语言在可移植性方面处于领先地位。在C语言中,没有专门与硬件有关的输入输出语句,程序的输入输出通过调用库函数实现,使C语言本身不依赖于硬件系统,编写出的程序具
11、有良好的可移植性。(7)灵活性 C语言的语法限制不太严格,对程序员没有施加过多的限制,程序设计能够很自由地进行,这给程序设计带来了很大的灵活性。(8)缺点C语言的某些优秀特性在给用户带来方便的同时,也可能给用户带来风险。例如,如果对C语言中的指针使用不当,可能带来严重后果(如非法访问内存地址等)。另外,C语言的简洁性,使用户可能编写出很多难以理解的程序,降低了可读性。虽然前面介绍了C语言的主要特点,但对于初学者而言,可能暂时无法明白,只有在使用C语言的过程中,或者在学习了其他高级语言并与之比较后,才能真正理解这些特点。1.4 C语言程序设计初步1.4.1 简单的C程序实例下面介绍几个简单的C语
12、言程序,并对程序作适当的解释。读者通过这些简单的例子,可以对C语言的语法和程序结构有一个感性的了解。用C语言编写的程序,称为C语言源程序(source program),简称为C程序。C程序一般由一个或多个文件组成,为了表示这些文件中存放的是C程序,他们必须以.c作为文件的后缀(扩展名)。【例1.1】 在屏幕上输出如下内容:Hello, EveryoneStudy hard!程序如下:# includevoid main()printf(Hello, EveryonenStudy hard!);运行情况如下:Hello, EveryoneStudy hard!程序说明: 这是一个简单的C程序。
13、编译预处理命令“# include”的作用是将“stdio.h”文件的内容嵌入到程序中,使输入输出能正常执行。 main是函数名,后面必须有一对圆括号。一个完整的C程序必须有一个main函数(即主函数)。一个C程序总是从main函数开始执行的。main前面的void指明了main函数的返回值类型,void表示空,就是不返回任何值。 void main()下面有一对花括号,花括号内的部分称为函数体,由若干语句组成,用于完成函数的功能。 printf是C的库函数中的一个函数,其作用是在屏幕上输出指定的内容。此程序中输出“Hello, EveryonenStudy hard!”字符串,其中“n”是输
14、出一个换行,使后面的“Study hard!”字符串在下一行输出。C语言规定每个语句以分号(;)结束,分号是语句不可缺少的部分。第一行的“# include”并不是C语句,在末尾不加分号,它是一条预处理命令,在编译之前执行。【例1.2】一个简单的加法计算程序,求两个整数的和。程序如下:#includevoid main()int x,y,sum; /* 定义存放整数的变量x、y、sum */ printf(Input a integer:); /* 显示提示信息“Input a integer:” */ scanf(%d,&x); /* 给变量x输入一个整数 */ printf(Input a
15、nother integer:); /* 显示提示信息“Input another integer:”*/ scanf(%d,&y); /* 给变量y输入一个整数 */ sum=x+y; /* 计算x+y, 把结果赋给sum */ printf(sum=%dn,sum); /* 输出sum的值 */ 运行情况如下:Input a integer: 3Input another integer: 5sum=8程序说明: 整个程序由一个main函数组成。 “int x, y, sum;”是变量定义语句,它告诉计算机,程序中用到整型变量x,y,sum,并为他们分配存储单元。 “scanf(%d,&x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第l章 C语言概述 语言 概述
限制150内