C语言程序设计第二章数据类型和表达式.ppt

上传人:sccc 文档编号:5376854 上传时间:2023-07-01 格式:PPT 页数:54 大小:226.51KB
返回 下载 相关 举报
C语言程序设计第二章数据类型和表达式.ppt_第1页
第1页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第2页
第2页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第3页
第3页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第4页
第4页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《C语言程序设计第二章数据类型和表达式.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第二章数据类型和表达式.ppt(54页珍藏版)》请在三一办公上搜索。

1、第二章 数据类型和表达式,第一节 基本数据类型,第二章,一、常用的基本数据类型:在C+语言中基本数据类型有5种:1、整型(int):2、浮点型(实型):float(单精度浮点型)double(双精度浮点型)3、字符型(char)4、空值型(void):常用于函数和指针。5、布尔型(bool):取值为真(true)和假(false)。为了满足各种情况的需求,除了void类型和bool类型外,在基本数据类型前面还可以加上下面的修饰,第二章,符来增加原来的含意:signed表示有符号 unsigned表示无符号 long表示长型 short表示短型 这4种修饰符都适用于整型和字符型,只有Long还适

2、用于双精度浮点型(long double)。二、C+语言的基本数据类型表 见教材表2-1。,第二节 常量和变量,第二章,一、常量:常量:是在程序中不被改变的量。常量有各种不同的数据类型,不同数据类型的常量是由其表示方法决定的。1、常量种类:(1)、整型常量:可以用十进制、八进制和十六进制 来表示,没有小数部分。八进制:以0为前缀,其后由07数字组成。十六进制:以0 x或0X为前缀,其后由09的数字和 AF(af)的字母组成。(2)、浮点型常量:是由整数部分和小数部分组成 的,只有十进制来表示,有小数表示法(一般表示 形式)和科学表示法两种表示形式。,第二章,科学表示法是在小数表示法后面加E(e

3、),表示 指数。如:4.5e-2.3。(3)、字符常量:是用一对单引号括起一个字符来表 示的。如:A C+中的字符可用该字符的图形符号来表示,也 可用转义序列表示法即字符的ASCII码值来表示。转义序列表示法:用符号开头,后面是字符的 ASCII码值,其中表示消除其后字符的原有含义。有两种形式:用字符的八进制 ddd,和用字符的 十六进制xhh。如:A表示为:101或 x41。实 际应用中,无图形符号的字符常用转义序列表示法。(4)、字符串常量:是用双引号括起来的字符序列。,第二章,又称串常量或字符串。注意:(a)、在一个字符串占多行时,每行最后用反斜线 表示续行符,说明下面一行的字符与上面是

4、同一行 的。如:tabctxyz!mnptefg!(b)、由于双引号是字符串的定界符,因此在字符 串中再出现双引号时必须以“”表示。如:Please enter Yor N:这个字符串表示:Please enterYor N:,第二章,字符串常量与字符常量的区别:(a)、字符常量用单引号括起,而串常量用双引号括 起。(b)、一个字符常量被存放在内存中,仅占1个字节,而串常量要占多个字节。(c)、字符常量与串常量所具有的操作功能也不相 同。例如,字符常量具有加法和减法运算,而字符 串常量不具有这种运算。(5)、布尔常量:布尔常量的值只有true 和false 两种。(6)、符号常量:在程序中用以

5、替代常量的标示符。如:pi用来替代。,第二章,2、定义常量的方法:const 类型常量名=初值;例如:const double PI=3.1415;二、变量:变量是在程序执行中其值可以改变的量。它具有三个基本要素:名字、类型、值。1、变量的名字:同标识符,即按标识符的规定来命名变量。2、变量的类型:每种变量都应该具有一种类型,在定义或说明变,第二章,量时一定要指出其类型。变量类型包括数据类型和存储类两部分,而数据类型又包含基本数据类型(5种)和构造数据类型两种。3、变量的值:变量存在有两个有用的值:即变量所表示的数据值和变量的地址值。4、变量的定义格式:任何一个变量在被引用之前必须定义,但在同

6、一个程序块内,不可以定义同名变量,而在不同程序块内可以定义同名变量。定义变量的格式为:类型变量名表;,第三节 数 组 类 型,第二章,一、数组的定义:1、概念:数组:是数目固定、类型相同的若干个变量的有序集合。数组中的每个变量称为一个元素。数组是一种构造数据类型。2、数组定义的格式:例如:int a3;char b35;float c357;二、数组的赋值:数组的赋值:是给数组的各个元素赋值。,第二章,1、数组元素的表示:数组元素可用下标表示,也可用指针表示。数组元素的下标表示法:注意:数组下标是从0开始,并且各个元素在内存中是按其下标的升序顺序连续存放的。例如:int a5;该数组 a是一个

7、一维数组,该数组的5个元素依次升序表示为a0,a1,a2,a3,a4。int b23;/二维数组 int c224;/三维数组,第二章,2、数组元素初始化 数组元素的初始化:是在定义数组时,使用初始值表给数组的各元素赋初值。初始值表:由一对花括号()括起来的若干个数据项组成,数据项之间用逗号分隔。例如:(1)、int a 3=3,5,7;(2)、int b 2 3=1,2,3,4,5,6;或=1,2,3,4,5,6;规定数组元素的个数要大于或等于初始值表中数据项的个数,否则会出错。,第二章,3、数组元素赋值 给数组元素赋值使用赋值表达式。如果数组元素的值间存在某种关系,可以用循环语句给各元素赋

8、值。例1:int m3 m0=5;m1=3;m2=1;例2.:int a10,for(int i=0;i10;i+)ai=i*2+1;,第二章,三、字符数组:字符数组:是指数组元素是char型的一种数组。前面所讲的数组的定义和赋值同样适用于字符数组。除此之外还有一些特殊的规定。可用一个字符串常量进行初始化。例1:char s14=a,b,c,d;一维字符数组s1含有4个元素,初始化后,s10为a,s11为b,s12为c,s13为d。s1的4个元素分别是一个有效字符。例2:char s25=a,b,c,d,0;一维字符数组s2,它有5个元素,经过初始化后,该数组的前4个元素分别为字符a至d,而最

9、后一个元素s24为0,因此,s2数组是一个字符串,它存放着,第二章,字符串常量“abcd”。例2中语句同于:char s25=abcd例3:char s35=abcde;初始化数组s3用上述语句是错误的,最后一位应是0。如果用字符串常量“abcde”初始化数组可以:char s3=“abcde”;或:char s36=“abcde”;对于二维、三维数组可以用前面讲过的初始值表的方法,也可以用字符串常量的方法。例4:char ss34=a,b,c,0,m,n,p,0,x,y,z,0;char ss34=abc,mnp,xyz;char ss 4=abc,mnp,xyz;,第四节 指针和引用,第二

10、章,一、指针:1、指针的概念:指针:是一种存放某个变量或对象的地址值的特殊变量,它的类型是它所存放的变量或对象的类型。所以,指针也具有一般变量的三个要素,只是类型和值与一般变量存在不同。例如:int a(5);int*p=,第二章,几种常见的指针定义:int*pi;/pi 是一个指向 int 型变量的指针float*pl;/pl 是一个指向 float 型变量的指针char*pc;/pc 是一个指向 char 型变量的指针int(*pa)3;/pa 是一个指向一维数组的指针int(*pf)();/pf 是一个指向函数的指针,该函数 的返回值为int 型数值 int*pp;/pp 是一个指向指针

11、的指针,即二级 指针3、指针的赋值:指针可赋初值,也可赋值。给指针赋的值是一个类型相同、级别一致的地址值。,第二章,、一般变量、数组元素、结构成员等其地址值都表 示为变量名前加运算符 表明p是一个指向数组b的指针,即指向b数组的首元素b0。、函数的地址值可用该函数的名字来表示,即一个指向函数的指针可用它所指向的函数名字来赋值。,第二章,例:double sin(double x);double(*pf)();pf=sin;表明pf是一个指向函数sin的指针,这里用 sin 给 pf赋值,实际上是让pf指针指向 sin 函数在内存中的入口地址。4、指针的运算:指针是一种特殊的变量,指针所允许的运

12、算是很有限的,仅有下述4种运算:(1)、赋值运算:可以将一个指针所指向的变量的地址值赋给它,还,第二章,可将一个数组的地址值或者一个函数在内存中的入 口地址值赋给所对应的指针。而对于一个暂时不用的指针,为了安全起见,可以 先将O 值赋给指针,使它变为空指针,还可将一个已被 赋值的指针赋给另外一个相同类型的指针。(2)、加减整型数的运算:可以加上或减去一个整数值,包括加1或减1运算。(3)、在一定条件下,两个指针可以相减:例如,指向同一个数组的不同元素的两个指针可以相减,其差便是这两个指针之间相隔元素个数。(4)、在一定条件下,两个指针可以比较:,第二章,例如,指向同一个数组元素的两个指针可以比

13、较,当这两个指针相等时,说明这两个指针是指向同一个数组元素的。二、指针和数组:在C+中,数组的元素可以用下标表示,也可用指针表示。1、指针可以表示数组元素(1)、一维数组:例如:int a5;下标表示:ai(i=0,1,2,3,4)指针表示:*(a+i)(i=0,1,2,3,4)指针表示法中,a是数组名,C+中规定任何一个数组的名字是一个常量指针,该指针的值便是该数组,第二章,的首元素的地址值。在一维数组中,数组名就是首元素地址。例中,a 与 j=0,1,2,3,4)指针方法:、一维数组的一维数组*(*(b+i)+j)、下标与指针混合:*(bi+j)/行数组用下标,列数组用指针(*(b+i)j

14、/行数组用指针,列数组用下标(3)三维数组:,第二章,2、指针可作为函数参数及返回值例:分析下列程序的输出结果。#include void main()static int a5=5,4,3,2,1;int i,j;i=a0+a4;j=*(a+2)+*(a+4);coutiendlj;输出结果:6 4,第二章,3、指向数组的指针和指针数组:(1)、指向数组的指针:指向数组的指针:可以是指向一般数组的指针,也可以是指向对象数组的指针。目前,我们接触的是二级指针,指向对象数组的指针在后面详细介绍。(2)、指针数组:指针数组:是指数组元素为指针的数组。一个数组的元素可以是指向同一类型的一般指针,也可

15、以是指向同一类类型的对象的指针。如:int*pa3=&a0,&a1,&a2,第二章,三、引用:1、引用的概念:引用:是某个变量或对象的别名。如果一个变量或对象一旦定义它的引用后,则该引用被“绑定”在这个变量或对象上,即变量或对象值被改变,则引用值也被改变,反之亦然。引用不是变量或对象,它不被分配内存空间,它的地址值是引用它的变量或对象的地址值。2、引用的定义格式:3、几点注意:a、定义引用时必须用一个相同类型的变量或对象名 进行初始化。,第二章,b、在引用上所施加的操作,实质上就是在被引用者上 的操作。c、将一个引用赋给某个变量,则该变量将具有被引用 的变量的值。d、可通过引用将指针指向变量的

16、地址。例如:int a=3;int intnm;int*p&m;4、引用的应用:引用在C+语言的程序中,通常用作函数参数和函数返回值。,第五节 运算符和表达式,第二章,一、运算符:1、运算符的种类及功能(1)、算术运算符:a、普通算术运算符:单目:+,-,双目:+,-,*,/,%(取余数)单目运算符的优先级要比双目运算符高。b、增1和减1运算符:单目运算符:+(增 1),-(减 1)有前缀和后缀两种运算方式,前缀运算表达式的值为原来变量值加(减)1,后缀运算表达式的值为原变量值;不论前缀运算还是后缀运算变量的值都(减)1。,第二章,(2)、逻辑运算符:单目逻辑运算符有:!(逻辑求反)双目逻辑运

17、算符有:&(逻辑与),|(逻辑或)逻辑与的优先级高于逻辑或。(3)、关系运算符:双目关系运算符:,=,=,=,!=前面四种的优先级高于后面的两种。(4)、位操作运算符:a、逻辑位运算符:单目逻辑位运算符有:(按位求反)双目逻辑位运算符有:&(按位与),|(按位或),(按位异或)在双目逻辑位运算符中,&高,而 又高于|。,第二章,b、移位运算符:移位运算符都是双目的:(右移)。注意:右移时,根据机器不同,左边移出的空位或 者一律补0,或者补符号位。(5)、赋值运算符:a、基本的:=(赋值运算符)b、复合的:10种+=(加赋值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(求余赋值),&

18、=(按位与赋值),|(按位或赋值),=(按位异或赋值),=(右移位赋值),注意:赋值运算符具有副作用。,第二章,(6)、其他运算符:a、三目运算符:C+中仅有一个三目运算符,其格式:d1?d2:d3 b、逗号运算符:,逗号运算符的优先级是所有运算符中最低的。整个逗号表达式的值和类型由最后一个表达式决定的。c、获取字节数运算符:sizeof 有两种使用形式:sizeof();d、强制类型运算符:该运算符用来将指定的表达式的值强制为所指定,第二章,的类型。有两种格式:()()e、成员选择运算符:和-(7)、C+语言增加的运算符:a、作用域运算符:b、成员指针选择符:*和-*c、创建堆对象运算符ne

19、w和释放堆对象运算符 delete2.运算符的优先级及结合性:教材表-。,第二章,二、表达式:1、表达式的种类:同C语言,有:算术表达式,逻辑表达式,关系表达式,赋值表达式,条件表达式,逗号表达式。2、表达式的值和类型:同C语言,同时需要注意:(1)、先确定运算符的功能:有些运算符相同,但是 功能不同(单目、双目、重载)。(2)、确定计算顺序(优先级和结合性、括号的使用)。表达式中的类型转换:同C语言,有隐含转换,和强制转换。,第六节 枚举类型,第二章,一、枚举类型和枚举变量 枚举:是若干个有名字的整型常量的集合。它是一种构造数据类型。在定义一个枚举变量之前,必须先定义一个枚举类型。1、枚举类

20、型:枚举类型定义格式:enum;其中:是由若干个用逗号分隔的枚举符组成的。枚举符:又称枚举常量,是一个用标识符表示的整型常量。例:enum day Sum,Mon,Tue,Wed,Thu,Fri,Sat;在默认的情况下每个枚举符所表示的整型数值,最前边一个为0,后一个是前一个的值加1。因此,Sum=0,Mon=1,Sat=6,第二章,枚举符的值也可以在定义时被显式赋值,没被显式赋值的枚举符仍按默认值,并仍按后一个是前一个值加1的规律。如上例中:enum daySum=7,Mon=1,Tue,Wed,Thu,Fri,Sat;此时:Sum=7,Mon=l,Tue=2,Sat=6。2、枚举变量:枚举

21、变量的定义格式:enum;例:enum day d1,d2,d3;d1,d2和d3是三个属于枚举名为day枚举变量名,它们的值是上面枚举表中规定的7个枚举符之一。枚举变量的定义也可以与枚举类型的定义连在一起来写。把上面的两个例子连起来,即为:,第二章,enum day Sum,Mon,Tue,Wed,Thu,Fri,Sat d1,d2,d3;二、枚举变量的值:枚举变量的值:是该枚举变量所属的枚举模式的枚举表的某一个枚举符。例如:d1=Sum;/正确 d2=Sat;/正确 d3=YELLOW;/错误,YELLOW不是已定义的枚举符 d4=3/错误,d4不是已定义的枚举变量 如果要用某个枚举符所表

22、示的整型值给枚举变量,需要进行强制类型。例如:enum color RED,BLUE,YELLOW,BLACK,WHITE;enum color c1,c2,c3;c3=enum color(3);/等价于:c3=BLACK,第七节 类型定义,第二章,一、自定义类型 自定义类型:是通过类型定义来定义一些“新”类型。这些新类型只是现有类型的同义词,或者是称为现有类型的别名。类型定义:是用一个或多个标识符来命名一个类型表达式,从而得到新的类型名。类型定义格式:typedef;例如:typedef double wages,bonus;wages weekly;bonus monthly;,第二章,

23、自定义类型的作用:1、改善程序的可读性,增加所定义变量的信息。2、减少定义变量的过于繁琐,即达到书写简练的目 的。3、提高程序的可移植性。二、类型表达式:类型表达式;是由数据类型名与类型修饰符*,array 是一个新的类型名,它被命名为类型表达式 int*5的类型。说明array的类型为5个元素的数组,每个元素是一个指向 int 型变量的指针。即用array,第二章,来定义的变量就是一个具有5个指向int变量指针的元素的数组。例:int*f(double);用一个类型表达式int*(double)来定义标识符f。,第八节 结构和联合,第二章,一、结构:结构是一种构造数据类型。1、结构和结构变量

24、的定义:结构是一种类型,又称结构模式,具有结构类型的变量称为结构变量。因此,应先定义结构类型再定义结构变量。(1)、结构类型定义格式:struct;花括号中给出该结构的若干成员的类型和名字。结构成员可以是基本数据类型的变量,也可以是构造,第二章,类型的变量,还可以是指针和引用。如:struct card int pips;char suit;int*p;(2)、结构变量的定义格式:struct;中可以是一般结构变量名,也可以是指向结构变量的指针名,还可以是结构数组。如:struct card c1,c2,*pc,cards5;其中,c1,c2是一般结构变量;*pc是指向card结构,第二章,类

25、型的结构变量的指针;cards5是结构数组,其每个元素都是card结构类型的结构变量。定义结构变量可以直接放在结构类型定义之后,因此上面例子可以合起来:struct card int pips;char suit;int*p c1,c2,*pc,cards5;2、结构变量成员的表示和赋值:(1)、结构变量成员的表示:a、一般结构变量的成员表示格式:.,第二章,b、指向结构变量的指针的成员表示格式:-或(*).c、结构数组元素的成员表示格式:下标.(2)、结构变量成员的初始化:定义结构变量时可利用初始值表为其成员赋初值。初始值表中的数值项顺序与该结构类型定义时 各成员顺序一致。如:struct

26、card int pips;char suit;struct card c1=5,s,c2=10,c;,第二章,(2)、结构变量的赋值方法:结构变量的赋值就是对结构变量的各个成员的赋值。如:struct card c1=5,s,c2,*pc;c2.pips=2;c2.suit=d;pc-pips=1;pc-suit=s;3、结构变量在程序中的应用:(1)、结构变量可作为结构类型的成员;(2)、结构变量可作为数组元素,此数组称为结构数 组;(3)、结构变量和指向结构变量的指针可作为函数的 参数和返回值;,第二章,二、联合:联合也是一种构造数据类型。联合又称共和体。联合类型及变量的定义格式与结构除关键词外都相同。1、联合的类型定义格式:union;2、联合变量的定义格式:union 3、联合变量成员的表示和赋值:联合变量成员的表示与结构变量成员的表示相同。而联合变量通常不进行初始化。,第二章,(1)、结构成员各自占有内存单元,即异址;(2)、联合的所有成员共用一个内存单元,即共址,该单元的大小与联合中数据长度最长的相同,因此 在某一时刻联合变量的各个成员中只有一个是有效 的,在给联合变量赋值时,只保留最近一次的值。5、联合在程序中应用:联合变量只可作为结构的成员和数组的元素,指向联合变量的指针可作为函数的参数。,第二章,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号