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

上传人:za****8 文档编号:14643988 上传时间:2020-07-27 格式:PPT 页数:54 大小:226.50KB
收藏 版权申诉 举报 下载
C语言程序设计第二章数据类型和表达式.ppt_第1页
第1页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第2页
第2页 / 共54页
C语言程序设计第二章数据类型和表达式.ppt_第3页
第3页 / 共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种修饰符都适用于整型和字

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

3、第二章,科学表示法是在小数表示法后面加E(e),表示 指数。如: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)、布尔常

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

6、有两个有用的值: 即变量所表示的数据 值和变量的地址值。 4、变量的定义格式: 任何一个变量在被引用之前必须定义,但在同一 个程序块内,不可以定义同名变量,而在不同程序块 内可以定义同名变量。 定义变量的格式为: 类型变量名表;,第三节 数 组 类 型,第二章,一、 数组的定义: 1、概念: 数组:是数目固定、类型相同的若干个变量的有序 集合。 数组中的每个变量称为一个元素。数组是一种 构造数据类型。 2、数组定义的格式: 例如: int a3; char b35; float c357; 二、 数组的赋值: 数组的赋值:是给数组的各个元素赋值。,第二章,1、数组元素的表示: 数组元素可用下标

7、表示,也可用指针表示。 数组元素的下标表示法: 注意:数组下标是从0开始,并且各个元素在内存 中是按其下标的升序顺序连续存放的。 例如: int a5; 该数组 a是一个一维数组 ,该数组的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; 或

8、=1,2,3,4,5,6; 规定数组元素的个数要大于或等于初始值表中数 据项的个数,否则会出错。,第二章,3、 数组元素赋值 给数组元素赋值使用赋值表达式。如果数组元素 的值间存在某种关系,可以用循环语句给各元素赋值。 例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; 一维

9、字符数组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,而最后一个元素 s24为0,因此,s2数组是一个字符串,它存放着,第二章,字符串常量“abcd”。例2中语句同于: char s25= abcd 例3:char s35= abcde; 初始化数组s3用上述语句是错误的,最后一位应 是0。如果用字符串常量“abcde”初始化数组可以: char s3 = “abcde”; 或: char

10、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;,第四节 指针和引用,第二章,一、 指针: 1、 指针的概念: 指针:是一种存放某个变量或对象的地址值的特殊 变量,它的类型是它所存放的变量或对象的类型。所 以,指针也具有一般变量的三个要素,只是类型和值 与一般变量存在不同。 例如: int a (5); int *p=,第二章,几种常见的指针定义: int *

11、pi; /pi 是一个指向 int 型变量的指针 float *pl; /pl 是一个指向 float 型变量的指针 char *pc; /pc 是一个指向 char 型变量的指针 int (*pa)3; /pa 是一个指向一维数组的指针 int (*pf)(); /pf 是一个指向函数的指针,该函数 的返回值为int 型数值 int * *pp; /pp 是一个指向指针的指针 , 即二级 指针 3、 指针的赋值: 指针可赋初值,也可赋值。给指针赋的值是一个 类型相同、级别一致的地址值。,第二章,、一般变量、数组元素、结构成员等其地址值都表 示为变量名前加运算符 表明p是一个指向数组b的指针,

12、 即指向b数组的首 元素b0 。 、函数的地址值可用该函数的名字来表示,即一个 指向函数的指针可用它所指向的函数名字来赋值。,第二章,例: double sin (double x); double (* pf)( ); pf=sin; 表明pf是一个指向函数sin的指针,这里用 sin 给 pf赋值, 实际上是让pf指针指向 sin 函数在内存 中的入口地址。 4、指针的运算: 指针是一种特殊的变量 ,指针所允许的运算是很 有限的,仅有下述4种运算: (1)、赋值运算: 可以将一个指针所指向的变量的地址值赋给它,还,第二章,可将一个数组的地址值或者一个函数在内存中的入 口地址值赋给所对应的指

13、针。 而对于一个暂时不用的指针,为了安全起见,可以 先将O 值赋给指针,使它变为空指针,还可将一个已被 赋值的指针赋给另外一个相同类型的指针。 (2)、加减整型数的运算: 可以加上或减去一个整数值,包括加1或减1运算。 (3)、在一定条件下,两个指针可以相减: 例如,指向同一个数组的不同元素的两个指针可以 相减 ,其差便是这两个指针之间相隔元素个数。 (4)、在一定条件下,两个指针可以比较:,第二章,例如,指向同一个数组元素的两个指针可以比较, 当这两个指针相等时,说明这两个指针是指向同一个数 组元素的。 二、指针和数组: 在C+中 ,数组的元素可以用下标表示 , 也可用 指针表示。 1、指针

14、可以表示数组元素 (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 /行数组用指针,列数组用下标 (3)三维数组:,第二章,2、指针可作为函数参数及返回值 例: 分

15、析下列程序的输出结果。 #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)、指针数组: 指针数组:是指数组元素为指针的数组。 一个数组的元素可以是指向同一类型的一般指针, 也可以是指向同一类类型的对象的指针。如: int *pa

16、3= int intnm; int *p不论前缀运算还是后缀运算变量的值都(减) 1。,第二章,(2)、逻辑运算符: 单目逻辑运算符有 :!( 逻辑求反 ) 双目逻辑运算符有 : d、强制类型运算符: 该运算符用来将指定的表达式的值强制为所指定,第二章,的类型。 有两种格式 : () () e、成员选择运算符: 和 - (7)、C+语言增加的运算符: a、作用域运算符: b、成员指针选择符: *和-* c、 创建堆对象运算符new和释放堆对象运算符 delete 2. 运算符的优先级及结合性: 教材表-。,第二章,二、表达式: 1、表达式的种类: 同C语言,有:算术表达式,逻辑表达式,关系表

17、达式,赋值表达式,条件表达式,逗号表达式。 2、表达式的值和类型: 同C语言,同时需要注意: (1)、先确定运算符的功能:有些运算符相同,但是 功能不同(单目、双目、重载)。 (2)、 确定计算顺序(优先级和结合性、括号的使用)。 表达式中的类型转换: 同C语言,有隐含转换,和强制转换。,第六节 枚举类型,第二章,一、枚举类型和枚举变量 枚举:是若干个有名字的整型常量的集合。它是一 种构造数据类型。在定义一个枚举变量之前,必须先 定义一个枚举类型。 1、枚举类型: 枚举类型定义格式: enum ; 其中:是由若干个用逗号分隔的枚举符组 成的。枚举符:又称枚举常量,是一个用标识符表示 的整型常量

18、。 例: 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、枚举变量: 枚举变量的定义格式: enum ; 例: enum day d1,d2,d3; d1,d2和

19、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不是已定义的枚举变量 如果要用某个枚举符所表示的整型值给枚举变量, 需要进行强制类型。例如: e

20、num 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;,第二章,自

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

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

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

24、构变量时可利用初始值表为其成员赋初值。初始值表中的数值项顺序与该结构类型定义时 各成员顺序一致。如: struct 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)、结构变量可作为数组元素,此数组称为结构数 组

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

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!