C语言期末复习概要.ppt_第1页
C语言期末复习概要.ppt_第2页
C语言期末复习概要.ppt_第3页
C语言期末复习概要.ppt_第4页
C语言期末复习概要.ppt_第5页
免费预览已结束,剩余91页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序的组成与实现操作数、运算符和表达式选择结构循环结构输入与输出数组指针函数变量的作用域和生存期结构体、共用体和枚举类型文件,一、C程序的组成与实现,C程序与源文件,一个C程序由一个或多个源文件组成。一个源文件可以供多个C程序使用。源文件是一个程序的基本编译单位。一个源文件中包括:预处理指令全局声明函数定义,C程序与函数,一个源文件主要由一个或多个函数组成。一个函数可以供多个源文件使用。一个C程序只能有一个主函数。函数是一个C程序的基本组成单位。一个函数包括:函数首部函数体,函数的结构,类型标识符函数名(形式参数表列)声明部分语句部分,函数首部,类型标识符函数的类型,也是函数返回值的类型。函数名函数的标示符,也是函数的入口地址。(形式参数表列)此处为形式参数,接收实际参数的单向、值传递。参数可以没有,但无论有无参数,括号均不能省略。,函数体,函数体由花括号限定。里面可以包括声明部分和语句部分,也可以什么都没有,但花括号不能省,即空函数。声明部分定义新变量或声明已有变量和函数。语句部分执行操作,共9类语句。声明部分和语句部分可以没有,但如果有,一定要声明在前,语句在后,即变量和函数必须:先声明,再使用。,声明部分,声明包括定义,但并非所有的声明都是定义。需要建立存储空间的。“定义性声明”,为叙述方便,简称“定义”。2.不需要建立存储空间的。“引用性声明”,为叙述方便,简称“声明”。,语句部分,1.表达式语句2.函数调用语句3.控制语句4.复合语句5.空语句,6.return语句7.break语句8.continue语句9.goto语句,C程序的实现,二、操作数、运算符和表达式,常量,在程序运行过程中,其值不能被改变的量称为常量。从字面形式即可判别的常量称为字面常量。如:56、12.3、a、“helloworld!”。用一个标识符代表一个常量,称为符号常量。如:#definePI3.1416。,变量,变量代表内存中具有特定属性的一个存储单元,它用来存放数据,也就是变量的值,在程序运行期间,这些值是可以改变的。变量名是映射一个特定存储地址的标示符。变量类型决定存储单元大小与数据存储形式。针对变量的操作是通过变量名找到对应地址,按变量类型在相应长度内按指定形式写入或读取的数据。,标识符,用来对变量、符号常量、函数、数组、类型等命名的有效字符序列统称为标识符。标识符只能由字母、数字和下划线组成,且第一个字符必须为字母或下划线。标识符不能是关键字(附录C)。标识符区分大小写,习惯上变量名使用小写字母,符号常量名使用大写字母。标识符的命名应尽量做到见名知意。,整型数据,int4字节。不带小数点的数值是整型数据。十进制:123、-31八进制:0123、-037十六进制:0 x12、-0 x1f,字符型数据,char1字节。字符数据是用单撇号括起来的一个字符。如a、8、?都是字符常量。除以上形式的字符数据外,还有一种特殊形式的字符数据,就是以转义字符“”开始的字符序列。如“n”。字符型变量在内存中以ASCII码形式存储,与整数的存储形式类似。两种数据可以通用。,浮点型数据,float4字节。浮点型数据用来表示有小数点的实数。十进制小数形式。它由数字和小数点组成。如0.123、123.、123.0、0.0、.5。指数形式。如1.2e3、12E-4字母e或E之前必须有数字,且e后面的指数必须为整数。,运算符,(),(,从左至右)!,-,+,-,*,for语句,一般形式为:for(表达式1;表达式2;表达式3)语句1相当于:for(初始条件;!终止条件;步长变化)循环语句,三种循环的比较,使用while和do-while循环,循环变量的初始化应在进入while和do-while语句之前完成;在for循环中可由表达式1实现。使用while和do-while循环,循环体内应包含使循环趋于结束的语句;在for循环中可由表达式3实现。使用while和do-while循环,while后面的括号内应说明循环结束的条件;在for循环中可由表达式2说明。,三种循环的特点,一般情况下,3种循环可以互相代替。while语句更适合处理“当”型循环。do-while语句更适合处理“直到”型循环。for语句书写灵活,功能最强,适合处理各种循环问题。只要遵循for语句的求值顺序,参数和语句可任意省略或写入无关的内容,循环功能的实现不受影响。,循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环。3种循环(while循环、dowhile循环和for循环)可以相互嵌套。,break语句,使用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。使用break语句可以跳出所在的循环体,即提前结束循环,接着执行循环体下面的语句。,continue语句,使用continue语句可以结束所在循环体的本次循环,即跳过循环体中下面尚未执行的语句,直接执行下一次循环的条件判断。,continue、break和goto的比较,continue语句只结束本次循环;break语句则结束整个循环。goto语句从深度循环的嵌套中一次跳出多层循环。,五、输入与输出,C语言的输入与输出,输入输出是以计算机为主体而言的。从计算机向输出设备输出数据称为输出。从输入设备向计算机输入数据称为输入。C语言本身不提供输入输出语句。输入和输出操作是由C函数库中的函数来实现的。使用“标准输入输出函数”的源程序文件在引用这些函数前必须:#include。,printf(),输出若干个任意类型的数据。函数形式:printf(格式控制,输出表列)格式控制是用双撇号限定的字符串,包括:格式说明。由“%”和格式字符组成。普通字符。普通字符即需要原样输出的字符。输出表列是需要按指定格式输出的若干数据。可以是变量,也可以是表达式。由逗号隔开。,scanf(),输入若干个任意类型的数据。函数形式:scanf(格式控制,地址表列)“地址表列”是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。,putchar(),输出一个字符。函数形式:putchar(c)参数c可以是常量也可以是变量;可以是字符型数据也可以是整型数据。,getchar(),输入一个字符。函数形式:getchar()参数是从输入设备得到的字符。,puts(),以第一个0做结束标志,将一个字符串输出到终端,并将0转换成n输出。函数形式:puts(字符数组名),gets(),以enter作为结束标志,输入一个字符串到字符数组。函数形式:gets(字符数组名),strlen函数,检测字符串的长度。函数形式:strlen(字符数组名)函数值返回值为被测字符串的实际长度(不包括0在内)。,格式符,%d:十进制整数。%f:十进制实数。%c:单个字符。%s:一个字符串。,修饰符,-:输出的数字或字符在域内向左靠拢。m:数据最小宽度n:输出的小数位数;,六、数组,数组的概念,数组是具有同一类型的有序数据的集合。C语言规定只能逐个引用数组元素而不能一次引用整个数组。必须先定义数组,然后引用数组元素。数组中各元素类型相同,与数组类型一致。每个元素由统一的数组名和惟一的下标确定。下标从0开始,必须为整型常量或表达式。,数组的本质,数组中的所有元素在内存中都是连续字节存放的,即保存在一块连续的内存区中。数组中各元素所占内存的大小为该元素所属基本类型的大小。数组所占内存的大小为一个元素所占内存的大小乘以元素个数。,数组的定义,定义一维数组的一般格式为:类型说明符数组名常量表达式;例如:inta10;,数组的初始化,定义时给所有元素赋值(1):inta3=1,2,3;定义时给所有元素赋值(2):inta=1,2,3;定义时给部分元素赋值:inta3=1,2;,字符数组的定义,用来存放字符型数据的数组是字符数组。字符数组中每个元素存放一个字符。定义字符数组的一般格式为:char数组名常量表达式例如:charc10;(数组长度10字节),使用字符对数组初始化,对字符数组初始化时可将逐个字符赋给数组中各元素。例如:charc5=H,e,l,l,o;字符数组长度与初值个数相同时,可省略数组长度。如果初值个数小于数组长度,其余的元素自动赋为空字符(即0)。字符数组长度小于初值个数时,系统报错。,使用字符串对数组初始化,charc=“Iamhappy”;花括号可省。省略数组长度,系统自动添加0作结束符。数组长度大于字符串常量的字符数个数时,多出的元素自动赋为空字符(即0)。数组长度小于字符串常量的字符数个数时,多出的字符不被存储。组长度等于字符串常量的字符个数时,本应自动添加的“0”将不被存储。,字符数组与字符串,字符数组是元素为字符变量的数组。字符串则是以0为结束字符的字符数组。字符数组是定长的,由下标控制访问。字符串是可变长的,因此必须用0来标记字符串的结束。,%c与%s,用%c输入输出逐个字符。用%s输入输出整个字符串。用%c输出字符,长度由循环控制变量决定。用%s输出字符串,到(不包括)0结束。用%c输入字符,输入项是元素的地址。用%s输入字符串,输入项是数组名。用%c输出字符,输出项是元素。用%s输出字符串,输出项是数组名。,指针,相关概念,地址是指内存中每个字节的具体编号。变量的地址是指特定存储单元的首字节编号。变量名是表示特定变量地址的识标符。指针就是地址。变量的指针即是变量的地址。指针变量则是专门用来存放地址的变量。,指针变量的定义,定义指针变量的一般形式为:基类型*指针变量名;使用指针变量存放内存中任意一个地址是没有意义且危险的。通常指针变量用来存放特定的某一变量的地址,使指针变量指向该特定变量。,指针变量与变量,若:inta=1;p=(设a的地址为2000)*p表示a,1。(初始化)指针变量string存放的是字符串首字节地址,而不是整个字符串。,指针变量与字符数组,定义:chara=“hello”;char*p=“hello”;chara;a=“hello”;char*p;p=“hello”;输入:scanf(“%s”,a);scanf(“%s”,*p);scanf(“%s”,指针变量与字符数组名,字符指针是变量,字符数组名是常量。chara=“hello”;char*p=“hello”;a=a+i;p=p+i;*a+;*p+;*(a+i);*(p+i);,函数,函数的执行,程序执行从主函数开始,在主函数中结束的。主函数只能被系统调用,主函数执行完后,流程返回操作系统。主函数可以调用其他函数,其他函数可以相互调用。被调函数执行完后,流程返回主调函数的调用结束处。,函数的调用,函数语句print_start();被调函数只完成一定的操作,无返回值。函数表达式c=max(a,b);被调函数的返回值参加表达式的运算。函数参数c=max(max(a,b),c);被调函数的返回值作为另一被调函数的其中一个实参。,函数的返回值,return语句将被调函数的返回值返回到主调函数的调用处。一个函数可以包含多条return语句。但一条return语句只能返回一个值。返回值类型应与函数类型一致。如不一致,返回值自动进行类型转换。函数定义为void(空类型),被调用时不返回任何值,函数体内不得出现return语句。,函数的定义与声明,函数的定义对函数功能的确立,包括指定函数名,函数值类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。函数的声明把函数的名字、函数类型以及形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查。,对被调函数的声明,被调用的函数必须是已经存在的函数。如调用库函数,应用#include命令将所需头文件“包含”到本文件中去。如调用自定义函数,如被调函数的定义在主调函数之后,应该在主调函数中对被调用的函数作声明。对函数的定义出现在主调函数之前,则调用前可以不必加以声明。,函数的参数,在定义函数时函数名后括号中的参数为“形式参数”(简称“形参”)。在主调函数中调用一个函数,该函数名后括号中的参数为“实际参数”(简称“实参”)。实参向形参的数据传递是“单向的”、“值传递”。形参与实参的类型必须相同。实参必须是确定的值,形参必须是变量。,函数参数的传递,实参(数值)常量、基本类型变量、数组元素形参(数值)基本类型变量实参(地址)变量地址、数组名、指针变量形参(地址)数组(数组名实际为指针变量)、指针变量,八、变量的作用域和生存期,作用域,作用域,局部变量,全局变量,自动变量,静态局部变量,寄存器变量,静态外部变量,外部变量,生存期,生存期,动态存储,静态存储,自动变量,寄存器变量,静态局部变量,外部变量,形式参数,静态外部变量,存放位置,存放位置,静态存储区,动态存储区,静态局部变量,静态外部变量,自动变量和形式参数,寄存器变量,外部变量,CPU寄存器,总结,指针,相关概念,地址是指内存中每个字节的具体编号。变量的地址是指特定存储单元的首字节编号。变量名是表示特定变量地址的识标符。指针就是地址。变量的指针即是变量的地址。指针变量则是专门用来存放地址的变量。,指针变量的定义,定义指针变量的一般形式为:基类型*指针变量名;使用指针变量存放内存中任意一个地址是没有意义且危险的。通常指针变量用来存放特定的某一变量的地址,使指针变量指向该特定变量。,指针变量与变量,若:inta=1;p=(设a的地址为2000)*p表示a,1。指针变量string存放的是字符串首字节地址,而不是整个字符串。,指针变量与字符数组,定义:chara=“hello”;char*p=“hello”;chara;a=“hello”;char*p;p=“hello”;输入:scanf(“%s”,a);scanf(“%s”,*p);scanf(“%s”,指针变量与字符数组名,字符指针是变量,字符数组名是常量。chara=“hello”;char*p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论