【文档说明】C--语言程序设计-第二章--数据类型和表达式课件.ppt,共(54)页,226.501 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-44496.html
以下为本文档部分文字说明:
第二章数据类型和表达式第一节基本数据类型第二章一、常用的基本数据类型:在C++语言中基本数据类型有5种:1、整型(int):2、浮点型(实型):float(单精度浮点型)double(双精度浮点型)3、字符型(char)4、空值型(void):常用于函数和指
针。5、布尔型(bool):取值为真(true)和假(false)。为了满足各种情况的需求,除了void类型和bool类型外,在基本数据类型前面还可以加上下面的修饰第二章符来增加原来的含意:signed表示有符号unsigned表示无符号long表示长型short表示短型这4种修饰符都适用于整
型和字符型,只有Long还适用于双精度浮点型(longdouble)。二、C++语言的基本数据类型表见教材表2-1。第二节常量和变量第二章一、常量:常量:是在程序中不被改变的量。常量有各种不同的数据类型,不同数据
类型的常量是由其表示方法决定的。1、常量种类:(1)、整型常量:可以用十进制、八进制和十六进制来表示,没有小数部分。八进制:以0为前缀,其后由0~7数字组成。十六进制:以0x或0X为前缀,其后由0~9的数字
和A~F(a~f)的字母组成。(2)、浮点型常量:是由整数部分和小数部分组成的,只有十进制来表示,有小数表示法(一般表示形式)和科学表示法两种表示形式。第二章科学表示法是在小数表示法后面加E(e),表示指数。如:4.5e-2.3。
(3)、字符常量:是用一对单引号括起一个字符来表示的。如:‘A‟C++中的字符可用该字符的图形符号来表示,也可用转义序列表示法即字符的ASCII码值来表示。转义序列表示法:用符号\开头,后面是字符的ASCII码值,其中\表示消除其后字符的原有含义。有两种形式:用字符的八进制\ddd,和用字
符的十六进制\xhh。如:‘A‟表示为:\101或\x41。实际应用中,无图形符号的字符常用转义序列表示法。(4)、字符串常量:是用双引号括起来的字符序列。第二章又称串常量或字符串。注意:(a)、在一个字符串占多行时
,每行最后用反斜线表示续行符,说明下面一行的字符与上面是同一行的。如:"\tabc\txyz!\mnp\tefg!"(b)、由于双引号是字符串的定界符,因此在字符串中再出现双引号时必须以“\"”表示。如:
"Pleaseenter\"Y\"or\"N\":"这个字符串表示:Pleaseenter"Y"or"N":第二章字符串常量与字符常量的区别:(a)、字符常量用单引号括起,而串常量用双引号括起。(b)、一个字符常量被存放在
内存中,仅占1个字节,而串常量要占多个字节。(c)、字符常量与串常量所具有的操作功能也不相同。例如,字符常量具有加法和减法运算,而字符串常量不具有这种运算。(5)、布尔常量:布尔常量的值只有true和false两种。(6)、符号常量:在程序中用以替代常量的标
示符。如:pi用来替代π。第二章2、定义常量的方法:const〈类型〉〈常量名〉=〈初值〉;例如:constdoublePI=3.1415;二、变量:变量是在程序执行中其值可以改变的量。它具有三个基本要素:名字、类型、值。1、变量的名字:同标识符,即按标识符的规
定来命名变量。2、变量的类型:每种变量都应该具有一种类型,在定义或说明变第二章量时一定要指出其类型。变量类型包括数据类型和存储类两部分,而数据类型又包含基本数据类型(5种)和构造数据类型两种。3、变量的值:变量存在有两个有用的值:即变量所表示的数据值和变
量的地址值。4、变量的定义格式:任何一个变量在被引用之前必须定义,但在同一个程序块内,不可以定义同名变量,而在不同程序块内可以定义同名变量。定义变量的格式为:〈类型〉〈变量名表〉;第三节数组类型第二章一、数组的定义:1、概念:数组:是数目固定、类型相同的若干个变量的有序
集合。数组中的每个变量称为一个元素。数组是一种构造数据类型。2、数组定义的格式:<类型><数组名>[<大小1>][<大小2>]…例如:inta[3];charb[3][5];floatc[3][5][7];二、数组的赋值:数组的赋值:是给数组的各个元素赋值。第二章1、数组
元素的表示:数组元素可用下标表示,也可用指针表示。数组元素的下标表示法:<数组名>[<下标表达式1>][<下标表达式2>]…注意:数组下标是从0开始,并且各个元素在内存中是按其下标的升序顺序连续存放的。例如:in
ta[5];该数组a是一个一维数组,该数组的5个元素依次升序表示为a[0],a[1],a[2],a[3],a[4]。intb[2][3];//二维数组intc[2][2][4];//三维数组第二章2、数组元素初始化数组元素的初始化:是在定义数组时,使用初始值表给数组的各元素赋初
值。初始值表:由一对花括号({})括起来的若干个数据项组成,数据项之间用逗号分隔。例如:(1)、inta[3]={3,5,7};(2)、intb[2][3]={{1,2,3},{4,5,6}};或={1,2,3,4,5,6};规
定数组元素的个数要大于或等于初始值表中数据项的个数,否则会出错。第二章3、数组元素赋值给数组元素赋值使用赋值表达式。如果数组元素的值间存在某种关系,可以用循环语句给各元素赋值。例1:intm[3]m[
0]=5;m[1]=3;m[2]=1;例2.:inta[10],for(inti=0;i<10;i++)a[i]=i*2+1;第二章三、字符数组:字符数组:是指数组元素是char型的一种数组。前面所讲的数组的定义和赋值同样适用于字符数组。除此之外还有一些特殊的规定。可用一个字符串常量进行初始化。例
1:chars1[4]={'a','b','c','d'};一维字符数组s1含有4个元素,初始化后,s1[0]为‘a‟,s1[1]为‘b‟,s1[2]为‘c‟,s1[3]为‘d‟。s1的4个元素分别是一个有效字符。例2:chars2[5]={'a',
'b','c','d','\0'};一维字符数组s2,它有5个元素,经过初始化后,该数组的前4个元素分别为字符a至d,而最后一个元素第二章字符串常量“abcd”。例2中语句同于:chars2[5]="abcd"例3:chars3[5]="abc
de";初始化数组s3用上述语句是错误的,最后一位应是‘\0‟。如果用字符串常量“abcde”初始化数组可以:chars3[]=“abcde”;或:chars3[6]=“abcde”;对于二维、三维数组可以用前面讲过的初始值表的
方法,也可以用字符串常量的方法。例4:charss[3][4]={{„a‟,‘b‟,‘c‟,‘\0‟},{'m','n','p',\0'},{'x','y','z','\0'}};charss[3][
4]={"abc","mnp","xyz"};charss[][4]={"abc","mnp","xyz"};第四节指针和引用第二章一、指针:1、指针的概念:指针:是一种存放某个变量或对象的地址值的特殊变量,它的类型是它所存放的变量或对象的类型。所以,指针也具有一般变量的三个要素,只是
类型和值与一般变量存在不同。例如:inta(5);int*p=&a;2、指针的定义格式:<类型>*<指针名>,*<指针名>,…;第二章几种常见的指针定义:int*pi;//pi是一个指向int型变量的指针float*p
l;//pl是一个指向float型变量的指针char*pc;//pc是一个指向char型变量的指针int(*pa)[3];//pa是一个指向一维数组的指针int(*pf)();//pf是一个指向函数的指针,该函数的返回值为int型数值int**pp;//pp是一个指向指针的
指针,即二级指针3、指针的赋值:指针可赋初值,也可赋值。给指针赋的值是一个类型相同、级别一致的地址值。第二章⑴、一般变量、数组元素、结构成员等其地址值都表示为变量名前加运算符&。例:inta,b[10];变量a的地址&a,数组中b[0]元素的地址&b[0],…。⑵、数组的地址值用该
数组名来表示。例:intb[10],*p=b;表明p是一个指向数组b的指针,即指向b数组的首元素b[0]。⑶、函数的地址值可用该函数的名字来表示,即一个指向函数的指针可用它所指向的函数名字来赋值。第二章例:doublesin(doublex);double(*pf)
();pf=sin;表明pf是一个指向函数sin的指针,这里用sin给pf赋值,实际上是让pf指针指向sin函数在内存中的入口地址。4、指针的运算:指针是一种特殊的变量,指针所允许的运算是很有限的,仅有下述4种运算:(1)、赋值运算:可以将一个指针所指向的
变量的地址值赋给它,还第二章可将一个数组的地址值或者一个函数在内存中的入口地址值赋给所对应的指针。而对于一个暂时不用的指针,为了安全起见,可以先将O值赋给指针,使它变为空指针,还可将一个已被赋值的指针赋给另外一个相同类型的指针。(2)、加减整型数的运算:可以加上或减去一个整数值,包括加1或减1运
算。(3)、在一定条件下,两个指针可以相减:例如,指向同一个数组的不同元素的两个指针可以相减,其差便是这两个指针之间相隔元素个数。(4)、在一定条件下,两个指针可以比较:第二章例如,指向同一个数组元素的两个指针可以比较,当这两个指针相等时,说
明这两个指针是指向同一个数组元素的。二、指针和数组:在C++中,数组的元素可以用下标表示,也可用指针表示。1、指针可以表示数组元素(1)、一维数组:例如:inta[5];下标表示:a[i](i=0,1,2,3,4)指针表示:*(a+i)(i=0,1,2,3,4)指针表示法中,a是
数组名,C++中规定任何一个数组的名字是一个常量指针,该指针的值便是该数组第二章的首元素的地址值。在一维数组中,数组名就是首元素地址。例中,a与&a[0]是一样的。(2)、二维数组:例如:intb[2][5];下标方法:b[i
][j](i=0,1;j=0,1,2,3,4)指针方法:①、一维数组的一维数组*(*(b+i)+j)②、下标与指针混合:*(b[i]+j)//行数组用下标,列数组用指针(*(b+i))[j]//行数组用指针,列数组用下标(3)三
维数组:第二章2、指针可作为函数参数及返回值例1:分析下列程序的输出结果。#include<iostream.h>voidmain(){staticinta[5]={5,4,3,2,1};inti,j;i=a[0]+a[4];j=*(a+2)+*(a+4);cou
t<<i<<endl<<j;输出结果:64第二章3、指向数组的指针和指针数组:(1)、指向数组的指针:指向数组的指针:可以是指向一般数组的指针,也可以是指向对象数组的指针。目前,我们接触的是二级指针,指向对象数组的指针在后面详细介绍。(2)、指针数组:指针数组:是指数组元素为指针的数组。一个数
组的元素可以是指向同一类型的一般指针,也可以是指向同一类类型的对象的指针。如:int*pa[3]={&a[0],&a[1],&a[2]}第二章三、引用:1、引用的概念:引用:是某个变量或对象的别名。如果一个变量或对象一旦定义它的引用后,则该引用被“绑定”在这个变量或对象上
,即变量或对象值被改变,则引用值也被改变,反之亦然。引用不是变量或对象,它不被分配内存空间,它的地址值是引用它的变量或对象的地址值。2、引用的定义格式:<类型>&<引用名>=<变量或对象名>;3、几点注意:a、定义引用时必须用一个相同类型的变量或对象名进行初始化。第二章b、
在引用上所施加的操作,实质上就是在被引用者上的操作。c、将一个引用赋给某个变量,则该变量将具有被引用的变量的值。d、可通过引用将指针指向变量的地址。例如:inta=3;int&m=a;m=m+5;intn=m;int*p=&m;4、引用的应用:引用在C++语言的程序中,通常用作函数参数和函数
返回值。第五节运算符和表达式第二章一、运算符:1、运算符的种类及功能(1)、算术运算符:a、普通算术运算符:单目:+,-,双目:+,-,*,/,%(取余数)单目运算符的优先级要比双目运算符高。b、增1和减1运算符:单目运算符:++(增1),--(减
1)有前缀和后缀两种运算方式,前缀运算表达式的值为原来变量值加(减)1,后缀运算表达式的值为原变量值;不论前缀运算还是后缀运算变量的值都(减)1。第二章(2)、逻辑运算符:单目逻辑运算符有:!(逻辑求反)双目逻辑运算符有:&&(逻辑与),||(逻辑或)逻辑与的优先级高于逻
辑或。(3)、关系运算符:双目关系运算符:>,<,>=,<=,==,!=前面四种的优先级高于后面的两种。(4)、位操作运算符:a、逻辑位运算符:单目逻辑位运算符有:~(按位求反)双目逻辑位运算符有:&(按位与),|(按位或),^(按位异或)在双目逻辑位运算符中,&高^,而^又高于|。第
二章b、移位运算符:移位运算符都是双目的:<<(左移),>>(右移)。注意:右移时,根据机器不同,左边移出的空位或者一律补0,或者补符号位。(5)、赋值运算符:a、基本的:=(赋值运算符)b、复合的:10种+=(加赋
值),-=(减赋值),*=(乘赋值),/=(除赋值),%=(求余赋值),&=(按位与赋值),|(按位或赋值),^=(按位异或赋值),<<=(左移位赋值),>>=(右移位赋值),注意:赋值运算符具有副作用。第二章(6)、其他运算符:a、三目运算符:C
++中仅有一个三目运算符,其格式:d1?d2:d3b、逗号运算符:,逗号运算符的优先级是所有运算符中最低的。整个逗号表达式的值和类型由最后一个表达式决定的。c、获取字节数运算符:sizeof有两种使用形式:sizeof(<类型说明符));sizeof(<表达式>);d、强制
类型运算符:该运算符用来将指定的表达式的值强制为所指定第二章的类型。有两种格式:<类型说明符>(<表达式>)(<类型说明符>)<表达式>e、成员选择运算符:·和->(7)、C++语言增加的运算符:a、
作用域运算符:∷b、成员指针选择符:·*和->*c、创建堆对象运算符new和释放堆对象运算符delete2.运算符的优先级及结合性:教材表2-3。第二章二、表达式:1、表达式的种类:同C语言,有:算术表达式,逻辑表达式,关系表达式,赋值表达式,条件表达式,
逗号表达式。2、表达式的值和类型:同C语言,同时需要注意:(1)、先确定运算符的功能:有些运算符相同,但是功能不同(单目、双目、重载)。(2)、确定计算顺序(优先级和结合性、括号的使用)。3.表达式中的类型转换:同C语言,有隐含转换,和强制转换。第六节枚举类型第二章一、枚举类型和枚举变量枚
举:是若干个有名字的整型常量的集合。它是一种构造数据类型。在定义一个枚举变量之前,必须先定义一个枚举类型。1、枚举类型:枚举类型定义格式:enum<枚举名>{<枚举表>};其中:<枚举表>是由若干个用逗号分隔的枚举符组成的。枚举符:又称枚举常量,是一个用标识符表示的整型常量。例:enumday{
Sum,Mon,Tue,Wed,Thu,Fri,Sat};在默认的情况下每个枚举符所表示的整型数值,最前边一个为0,后一个是前一个的值加1。因此,Sum=0,Mon=1,……Sat=6第二章枚举符的值也可以在定义时被显
式赋值,没被显式赋值的枚举符仍按默认值,并仍按后一个是前一个值加1的规律。如上例中:enumday{Sum=7,Mon=1,Tue,Wed,Thu,Fri,Sat};此时:Sum=7,Mon=l,Tue=2,……
,Sat=6。2、枚举变量:枚举变量的定义格式:enum<枚举名><枚举变量名表>;例:enumdayd1,d2,d3;d1,d2和d3是三个属于枚举名为day枚举变量名,它们的值是上面枚举表中规定的7个枚举符之一。枚举变量的定义也可以与
枚举类型的定义连在一起来写。把上面的两个例子连起来,即为:第二章enumday{Sum,Mon,Tue,Wed,Thu,Fri,Sat}d1,d2,d3;二、枚举变量的值:枚举变量的值:是该枚举变量所属的枚举模式的枚举表的某一个枚举符。例如:d1=Sum;//正确d2=
Sat;//正确d3=YELLOW;//错误,YELLOW不是已定义的枚举符d4=3//错误,d4不是已定义的枚举变量如果要用某个枚举符所表示的整型值给枚举变量,需要进行强制类型。例如:enumcolor{RED,BLUE,YELLOW,BLACK,WHITE};enumcol
orc1,c2,c3;c3=enumcolor(3);//等价于:c3=BLACK第七节类型定义第二章一、自定义类型自定义类型:是通过类型定义来定义一些“新”类型。这些新类型只是现有类型的同义词,或者是称为现有类型的别名。类型定义:是用一个或多个标识符来命名一个类型表
达式,从而得到新的类型名。类型定义格式:typedef<已有类型名><新类型名表>;例如:typedefdoublewages,bonus;wagesweekly;bonusmonthly;第二章自定义类型的作用:1、改善程序的可读性,增加所定义变量的信息。2、减少定义变量的过于繁琐,即达到书写
简练的目的。3、提高程序的可移植性。二、类型表达式:类型表达式;是由数据类型名与类型修饰符*,[],&和()所构成的式子。例:typedefint*array[5];array是一个新的类型名,它被命名为类型表达式int*[5]的类型。说明array的类型为5个元素的数组,每个元素是
一个指向int型变量的指针。即用array第二章来定义的变量就是一个具有5个指向int变量指针的元素的数组。例:int*f(double);用一个类型表达式int*(double)来定义标识符f。第八节结构和联合第二章一、结构:结构是一种构造数据类型。1、结构和结构变量的定义:
结构是一种类型,又称结构模式,具有结构类型的变量称为结构变量。因此,应先定义结构类型再定义结构变量。(1)、结构类型定义格式:struct<结构名>{<若干成员说明>};花括号中给出该结构的若干成员的类型和名字。结构成员可以是基本数据类型的变量
,也可以是构造第二章类型的变量,还可以是指针和引用。如:structcard{intpips;charsuit;int*p};(2)、结构变量的定义格式:struct<结构名><结构变量名表>;<结构变量名表>中可以是一般结构变量名,也可以是指向结
构变量的指针名,还可以是结构数组。如:structcardc1,c2,*pc,cards[5];其中,c1,c2是一般结构变量;*pc是指向card结构第二章类型的结构变量的指针;cards[5]是结构
数组,其每个元素都是card结构类型的结构变量。定义结构变量可以直接放在结构类型定义之后,因此上面例子可以合起来:structcard{intpips;charsuit;int*p}c1,c2,*pc,c
ards[5];2、结构变量成员的表示和赋值:(1)、结构变量成员的表示:a、一般结构变量的成员表示格式:<结构变量名>.<成员名>第二章b、指向结构变量的指针的成员表示格式:<结构变量指针名>-><成员名>或(*<结构变量指针名>)
.<成员名>c、结构数组元素的成员表示格式:<结构数组名>[下标].<成员名>(2)、结构变量成员的初始化:定义结构变量时可利用初始值表为其成员赋初值。初始值表中的数值项顺序与该结构类型定义时各成员顺序一致。如:structcard{intpips;
charsuit;};structcardc1={5,'s'},c2={10,'c'};第二章(2)、结构变量的赋值方法:结构变量的赋值就是对结构变量的各个成员的赋值。如:structcardc1={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、联合在程序中应用:联合变量只可作为结构的成
员和数组的元素,指向联合变量的指针可作为函数的参数。第二章