第1页共6页第一章C语言概述1.1C语言出现的历声背景1.产生背景在C语言诞生以前,系统软件主要是用汇编语言编写的。汇编语言程序的特点:依赖于计算机硬件;其可读性和可移植性都很差;一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),人们盼望有一种兼有汇编语言和高级语言特性的新语言。2.产生过程时间:1972~1973地点:美国贝尔实验室目的:UNIX操作系统来源:早期的编程语言BCPL发展演变而来设计人:Ken.Thompson和Dennis.M.Ritchie3.C标准标准C:K&R合著《TheCProgrammingLanguage》1978年(美国国家标准化协会)ANSIC:1983年87ANSIC:1987年1990年国际标准的ISOC1.2C语言的特点一种语言之所以能存在和发展,并具有生命力,总是有其不同于(或优于)其它语言的特点。C语言的主要特点如下。第2页共6页1.语言简洁、紧凑,使用方便、灵活。C语言一共只有32个关键字(见附录II),9种控制语句,程序书写形式自由,主要用小写字母表示,压缩了一切不必要的成分。2.运算符丰富C的运算符包含的范围很广泛,共有34种运算符(见附录III)。C把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。3.数据结构丰富,具有现代化语言的各种数据结构C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。尤其是指针类型数据,使用起来比Pascal更为灵活、多样。4.具有结构化的控制语句(如if...else语句、whi1e语句、do…whi1e语句、for语句)。用函数作为程序模块以实现程序的模块化。是结构化的理想语言,符合现代编程风格要求。5.语法限制不大严格,程序设计自由度大.例如,对数组下标越界不作检查,由程序编写者自己保证程序的正确。对变量的类型使用比较灵活,例如,整型量与字符型数据以及逻辑型数据可以通用,一般的高级语言语法检查比较严,能检查出几乎所有的语法错误。而C语言允许程序编写者有较大的自由度,因此放宽了语法检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C编译程序去查错。“限制”与“灵活”是一对矛盾。限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的人员,编一个正确的C程序可能会比编一个其它高级语言程序难一些。也就是说,对用C语言的人,要求对程序设计更熟练一些。6.C语言允许直接访问物理地址能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操第3页共6页作,因此C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。有人把C称为“高级语言中的低级语言”,也有人称它为“中级语言”意为兼有高级和低级语言的特点。7.生成目标代码质量高,程序执行效率高。一般只比汇编程序生成的目标代码效率低10~20%。8.用C语言写的程序可移植性好(与汇编语言比)。基本上不作修改就能用于各种型号的计算机和各种操作系统。上面我们只介绍了C语言的最容易理解的一般特点,至于C语言内部的其它特点将结合以后各章的内容作介绍。由于C语言的这些优点,使C语言应用面很广。许多大的软件都用C编写,这主要是由于C的可移植性好和硬件控制能力高,表达和运算能力强。许多以前只能用汇编语言处理的问题现在可以改用C语言来处理了。C的以上特点,读者现在也许还不能深刻理解,待学完C以后再回顾一下,就会有比较深的体会。总之,C语言对程序员要求较高。程序员使用C语言编写程序会感到限制少、灵活性大,功能强,可以编写出任何类型的程序。现在,C语言已不仅用来编写系统软件,也用来编写应用软件。学习和使用C的人已越来越多。1.3简单的C程序介绍下面先介绍几个简单的C程序,然后从中分析C程序的特性。[例1.1]/*Example1.1onpage4*/main(){printf(ThisisaCprogram\n);}本程序的作用是输出以下一行ThisisaCprogram其中main表示“主函数”,每一个C程序都必须有一个main函数。函数体由大括弧{}只有一个输出语句,printf是C语言中的输出函数(详见第三章);“\n”是换行符。[例1.2]/*Example1.2onpage4*/main(){inta,b,sum;第4页共6页a=123;b=456;sum=a+b;printf(Sumofaplusbis%d\n,sum);}本程序的作用是求两个整数a和b之和sum/*……*/表示注释部分,为便于理解,用汉字表示注释,当然也可以用英语或汉字拼音作注释。注释只是给人看的,对编译和运行不起作用,注释可以加在程序中任何位置。第二行是变量定义部分,说明a,b.sum是整型(int)变量。第三行是两个赋值语句,使a和b的值分别为123和456。第四行使sum的值为a+b第五行中“%d”是输入输出“格式字符串”,用来指定输入输出时的数据类型和格式(详见第三章),“%d”表“十进制整数类型”。在执行输出时,此位置上代以一个十进制整数,因此输出一行信息为:Sumofaplusbis579[例1.3]/*Example1.3onpage4*/main()/*主函数*/{inta,b,c;/*定义变量*/printf(Inputa,b:);scanf(%d,%d,&a,&b);/*输入变量a和b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c*/printf(Maxofaandbis%d\n,c);/*输出c的值*/}intmax(x,y)/*定义max函数,函数值为整型,x,y为形式参数*/intx,y;/*对形参x,y作类型定义*/{intz;/*max函数中用到的变量z,也要加以定义*/if(xy)z=x;elsez=y;return(z);/*将z的值返回,通过max带回调用处*/}本程序包括两个函数:主函数和被调函数max,max函数的作用是将x和y中较大者的值赋给变量z.return语句将z的值返回给主调函数main。返回值是通过函数名max带回到main函数的调用处,main函数中的scanf是“输入函数”的名字(scanf,printf都是C语言提供的标准输入输出函数)。程序中scanf函数的作用是输入a和b的值。&a和&b中的“&”的含义是“取地址”,此scanf函数的作用是:将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。这种形式是与其它语言不同的,它相当于basic语言中的inputa,b“%d,%d”的含义与前相同,只是现在用于“输入”。它指定输入的两个数据按十进制整数形式输入。关于scanf函数佯见第三章。main函数中第四行为调用max函数,在调用时将实际参数a和b的值分别传送给第5页共6页max函数中的形式参数x和y。经过执行max函数得到一个返回值(即max函数中变量z的值),把这个值赋给变量c,然后输出c的值。printf函数中双引号内的“max=%d”在输出时,其中“%d”将由c的值取代之,“max=”原样输出。程序运行情况如下:8,5(输入8和5给a和b)max=8(输出c的值)本例用到了函数调用、实参和形参等概念,只作了很简单的解释。读者如对此不大理解,可以先不予以深究,在学到以后有关章节时问题自然迎刃而解。在此介绍此例子,无非是让大家对C程序的组成和形式有个初步的了解。通过上例,可以看到:1·C程序是由函数构成的。一个C源程序至少包含一个函数(main函数),也可以包含一个main和若干其他函数。C的函数相当于其它语言中的子程序。用函数来实现特定的功能。可以说C是函数式的语言。程序全部工作都是由函数来完成的。C的函数库十分丰富,标准C提供一百多个库函数,TurboC和MSC4.0提供三百多个库函数。C的这种特点使得容易实现程序的模块化。2.一个函数由两部分组成:(1)函数的说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。例如例1.3中的max函数的说明部分为。intmax(x,y)函数类型函数名函数参数intx,y;形参类型形参一个函数名后面必须跟一对圆括弧,函数参数可以没有,如main()。(2)函数体,即函数说明部分下面的大括弧{…}内的部分。如果一个函数内有多个大括弧,则最外层的一对{}为函数体的范围。函数体一般包括:①变量定义。如例1.3中main函数中的“inta,b,c”。②执行部分。由若干个语句组成。当然,在某些情况下也可以没有变量定义部分(例如例1.1)。甚至可以既无变量定义也无执行部分。如:dump(){}它是一个空函数,什么也下干,但这是合法的。3.一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前在另一些函数之后)。4.C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上人程序没有行号,也不象FORTRAN或CoBoL那样严格规定书写格式(语句必须从某一列开始书写)。5.每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。例如:第6页共6页c=a十b;分号不可少。即使是程序中最后一个语句也应包含分号(这是和PAScAL语言不同的)。6.C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成.C对输入输出实行‘函数化'7.可以用/*……*/对C程序中的任何部分作注释,一个好的,有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。1.4C程序的上机步骤在了解了上述C语言的初步知识后,一定要上机运行一个C程序,以增加对C的认识。在编好一个C源程序后,如何上机运行呢?下面就TurboC的环境下运行C程序作一简单介绍。用TurboC运行C程序的步骤先将TurboC装人磁盘tc目录。1.调用TurboC程序,进入MS-dos;只需打入:cd\tc;tc屏幕顶部出现一排“命令”行菜单:2.编辑源文件。根据需要输入或修改源程序。File.c3.编译源程序。File.obj;file.exe4.执行程序。按”F10”键,屏幕又出现命令行:如果发现运行结果不对,要重新修改源程序,可以再按“Fl0”键,按回车键,即进入编辑状态,可以根据需要修改源程序,并重复上述2、3、4步,直到得到正确结果为止。如果想再修改源程序,可以重新执行步骤1,并输入源程序文件名即可。以上步骤只需上机试一下即可明白。关于上机操作的详细说明可参阅《C语言上机指导》。