面向对象程序设计C++第4章-复合数据类型.ppt

上传人(卖家):三亚风情 文档编号:3385486 上传时间:2022-08-26 格式:PPT 页数:32 大小:3.65MB
下载 相关 举报
面向对象程序设计C++第4章-复合数据类型.ppt_第1页
第1页 / 共32页
面向对象程序设计C++第4章-复合数据类型.ppt_第2页
第2页 / 共32页
面向对象程序设计C++第4章-复合数据类型.ppt_第3页
第3页 / 共32页
面向对象程序设计C++第4章-复合数据类型.ppt_第4页
第4页 / 共32页
面向对象程序设计C++第4章-复合数据类型.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、 第7章 继承与派生 第8章 多态和虚函数 第9章 模板和异常处理 第10章 文件的输入输出 第11章 Visual C+编程基础目录页目录页 Contents page 第1章 绪论 第2章 数据类型和表达式 第3章 控制结构 第4章 复合数据类型 第5章 函数 第12章 MFC应用程序实例 第6章 类与对象 目 录 页第第4 4章章复合数据类型复合数据类型学习目标学习目标u 掌握一维数组和二维数组的定义、初始化和使用方法u 理解字符数组与字符串的区别,掌握它们的使用方法u 理解结构类型的含义,掌握结构类型变量的定义和使用u 理解指针的含义,掌握指针的定义、初始化和使用方法 目 录 页第第4

2、 4章章复合数据类型复合数据类型4.1 一维数组4.1.1 一维数组的定义一维数组的定义一维数组的定义格式为:一维数组的定义格式为:其中:其中:类型类型标识符:标识符:表示数组中所有元素的数据类型。表示数组中所有元素的数据类型。数组名:数组名:就是这个数组型变量的名称。就是这个数组型变量的名称。常量表达式:常量表达式:指出一维数组中元素的个数,即数组长度。指出一维数组中元素的个数,即数组长度。目 录 页第第4 4章章复合数据类型复合数据类型4.2 二维数组4.2.1 二维数组的定义二维数组的定义二维数组的定义格式为:二维数组的定义格式为:其中:其中:常量表达式常量表达式1:表示数组的行数。表示

3、数组的行数。常量表达式常量表达式2:表示数组的列数表示数组的列数。4.2.2 二维数组的引用二维数组的引用二维数组元素的引用形式为:二维数组元素的引用形式为:目 录 页第第4 4章章复合数据类型复合数据类型4.2 二维数组4.2.3 二维数组的初始化二维数组的初始化二维数组的初始化,可以用以下两种方法来实现:二维数组的初始化,可以用以下两种方法来实现:(1)按行赋初值按行赋初值int a34=11,12,13,14,21,22,23,24,31,32,33,34;赋初值后数组为:赋初值后数组为:目 录 页第第4 4章章复合数据类型复合数据类型4.2 二维数组4.2.3 二维数组的初始化二维数组

4、的初始化二维数组的初始化,可以用以下两种方法来实现:二维数组的初始化,可以用以下两种方法来实现:(2)按在内存中的排列顺序给各元素赋初值按在内存中的排列顺序给各元素赋初值 将所有数据写在一个花括号内,按数据排列的顺序对各元素赋初值将所有数据写在一个花括号内,按数据排列的顺序对各元素赋初值。对部分元素显式赋初值,未显式赋初值的元素将自动设为对部分元素显式赋初值,未显式赋初值的元素将自动设为0。若对全部元素显式赋初值,则数组第一维的元素个数在说明时可以不指定,但第二维的元素若对全部元素显式赋初值,则数组第一维的元素个数在说明时可以不指定,但第二维的元素个数不能缺省个数不能缺省。目 录 页第第4 4

5、章章复合数据类型复合数据类型4.3 字符数组与字符串4.3.1 字符数组字符数组1.字符数组的定义字符数组的定义 一维字符数组的定义格式为:一维字符数组的定义格式为:二维字符数组的定义格式为:二维字符数组的定义格式为:2 字符数组的引用字符数组的引用字符数组的引用和数值型数组一样,也是使用下标的形式字符数组的引用和数值型数组一样,也是使用下标的形式。目 录 页第第4 4章章复合数据类型复合数据类型4.3 字符数组与字符串4.3.1 字符数组字符数组3.字符数组的初始化字符数组的初始化一维字符数组的初始化,有如下几种方法:一维字符数组的初始化,有如下几种方法:(1)逐个字符赋给数组中各元素逐个字

6、符赋给数组中各元素(2)在定义字符数组时进行初始化,可以省略数组在定义字符数组时进行初始化,可以省略数组长度字符长度字符数组的长度也可用初值来数组的长度也可用初值来确定确定(3)利用字符串给字符数组赋初值利用字符串给字符数组赋初值 目 录 页第第4 4章章复合数据类型复合数据类型4.3 字符数组与字符串4.3.2 字符串字符串1字符串及其结束符字符串及其结束符0 字符串是用双引号括起来的若干有效字符序列,以字符串是用双引号括起来的若干有效字符序列,以0(ASCII码值为码值为0)结尾,也可以看成是以结尾,也可以看成是以0结尾的字符数组。例如:结尾的字符数组。例如:I am a student

7、/正确,合法的字符串正确,合法的字符串a /正确,合法的字符串正确,合法的字符串a /错误!是单字符,非字符串错误!是单字符,非字符串morning /错误!没用双引号括起来错误!没用双引号括起来字符串是利用字符数组存放的。在进行字符处理时,必须事先知道字符数组中的字符个数,这字符串是利用字符数组存放的。在进行字符处理时,必须事先知道字符数组中的字符个数,这在程序设计过程中是很麻烦的一件事。在程序设计过程中是很麻烦的一件事。目 录 页第第4 4章章复合数据类型复合数据类型4.3 字符数组与字符串3字符串的输入与输出字符串的输入与输出在在C/C+语言库函数中,提供以下两类字符串的输入与输出函数。

8、语言库函数中,提供以下两类字符串的输入与输出函数。(1)格式化的字符串输入格式化的字符串输入/输出函数:输出函数:scanf()/printf()(2)非格式化的字符串输入非格式化的字符串输入/输出函数:输出函数:gets()、cin.getline()/puts()格式:格式:功能:读入键盘输入的字符串,并存储在字符数组中。功能:读入键盘输入的字符串,并存储在字符数组中。格式:格式:功能:将字符数组中的字符串输出在屏幕上。功能:将字符数组中的字符串输出在屏幕上。目 录 页第第4 4章章复合数据类型复合数据类型4.3 字符数组与字符串4.3.3 字符串处理函数字符串处理函数C+语言提供了一些字

9、符串处理函数,这些函数的原型在头文件语言提供了一些字符串处理函数,这些函数的原型在头文件string.h中。中。1.求字符串长度函数求字符串长度函数strlen()格式:格式:功能:计算字符串的实际长度(不包括结束符功能:计算字符串的实际长度(不包括结束符0)。函数的返回值为字符串的实际长度)。函数的返回值为字符串的实际长度。2.字符串复制函数字符串复制函数strcpy()格式:格式:功能:把源字符数组中的字符串复制到目地字符数组中,字符串结束符功能:把源字符数组中的字符串复制到目地字符数组中,字符串结束符0 也一同复制。也一同复制。目 录 页第第4 4章章复合数据类型复合数据类型4.3 字符

10、数组与字符串4.3.3 字符串处理函数字符串处理函数C+语言提供了一些字符串处理函数,这些函数的原型在头文件语言提供了一些字符串处理函数,这些函数的原型在头文件string.h中。中。3.字符串连接函数字符串连接函数strcat()格式:格式:功能:把源字符数组中的字符串连接到目地字符数组的后面,并删除目地字符数组中的字符串功能:把源字符数组中的字符串连接到目地字符数组的后面,并删除目地字符数组中的字符串结束符结束符0。要求要求目地字符数组应有足够的长度,否则不能装下连接后的字符串。目地字符数组应有足够的长度,否则不能装下连接后的字符串。目 录 页第第4 4章章复合数据类型复合数据类型4.3

11、字符数组与字符串4.两字符串比较函数两字符串比较函数strcmp()、strncmp()函数函数strcmp()用于两字符串的比较,而函数用于两字符串的比较,而函数strncmp()用于两字符串的前用于两字符串的前n个字符构成的子串的比个字符构成的子串的比较。两个字符串大小比较效果与英文单词字典排列先后确定大小一致。较。两个字符串大小比较效果与英文单词字典排列先后确定大小一致。格式格式:int r;r=strcmp(字符数组名(字符数组名1,字符数组名,字符数组名2);(或或r=strncmp(字符数组名(字符数组名1,字符数组名,字符数组名2);)功能功能:按照:按照ASCII码顺序比较两个

12、字符数组中的字符串,并由函数返回值返回比较结果。码顺序比较两个字符数组中的字符串,并由函数返回值返回比较结果。返回返回值如下:值如下:r0 字符串字符串1 0 字符串字符串1 字符串字符串2。目 录 页第第4 4章章复合数据类型复合数据类型4.4 结构体类型4.4.1 结构类型的定义结构类型的定义定义一个结构类型的一般形式为定义一个结构类型的一般形式为:struct 结构类型名结构类型名 数据类型数据类型 数据项数据项1;数据类型数据类型 数据项数据项2;数据类型数据类型 数据项数据项n;目 录 页第第4 4章章复合数据类型复合数据类型4.4 结构体类型4.4.2 结构变量的定义结构变量的定义

13、定义了结构体类型定义了结构体类型Student,并不分配存储空间。只有定义了相应的结构体变量,系统才分配内,并不分配存储空间。只有定义了相应的结构体变量,系统才分配内存空间。定义结构体类型变量有以下存空间。定义结构体类型变量有以下2种方法:种方法:1.间接定义法间接定义法先定义结构体类型,再定义变量先定义结构体类型,再定义变量 结构体变量定义的一般形式为:结构体变量定义的一般形式为:目 录 页第第4 4章章复合数据类型复合数据类型4.4 结构体类型4.4.2 结构变量的定义结构变量的定义2.直接定义法直接定义法在定义结构体类型的同时定义变量在定义结构体类型的同时定义变量定义的一般形式为定义的一

14、般形式为:struct 结构类型名结构类型名 /此时,结构类型名可缺省此时,结构类型名可缺省 数据类型数据类型 数据项数据项1;数据类型数据类型 数据项数据项2;数据类型数据类型 数据项数据项n;变量名表变量名表;目 录 页第第4 4章章复合数据类型复合数据类型4.4 结构体类型4.4.3 结构体变量的引用结构体变量的引用1简单结构变量的引用简单结构变量的引用结构体变量的使用是通过对其每个成员的引用来实现的,一般形式如下:结构体变量的使用是通过对其每个成员的引用来实现的,一般形式如下:2.同类型结构变量间的引用同类型结构变量间的引用ANSI C新标准允许将一个结构类型的变量,作为一个整体赋给另

15、一个同结构类型的变量。如有新标准允许将一个结构类型的变量,作为一个整体赋给另一个同结构类型的变量。如有定义定义:4.4.4 结构变量的初始化结构变量的初始化定义结构变量的同时,允许对结构变量初始化,但结构成员的数据类型与初值一致定义结构变量的同时,允许对结构变量初始化,但结构成员的数据类型与初值一致。目 录 页第第4 4章章复合数据类型复合数据类型4.5 结构体数组4.5.1 结构体数组的定义结构体数组的定义定义结构体数组的一般形式如下:定义结构体数组的一般形式如下:4.5.2 结构体数组的引用结构体数组的引用结构体结构体数组元素也是通过数组名和下标来引用的。对结构体数组元素的引用与对结构体变

16、量的数组元素也是通过数组名和下标来引用的。对结构体数组元素的引用与对结构体变量的引用一样,也是逐级引用,只能对最低级的成员进行存取和运算。引用一样,也是逐级引用,只能对最低级的成员进行存取和运算。结构体结构体数组的引用的一般形式为:数组的引用的一般形式为:目 录 页第第4 4章章复合数据类型复合数据类型4.5 结构体数组4.5.3 结构体数组的初始化结构体数组的初始化结构结构数组也可以在定义时进行初始化。其一般形式是:数组也可以在定义时进行初始化。其一般形式是:目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.1 指针的概念指针的概念为了理解指针,必须了解计算机硬件系统的内

17、存地址的概念。为了理解指针,必须了解计算机硬件系统的内存地址的概念。1内存地址内存地址在计算机硬件系统的内存存储器中,拥有大量的存储单元(以字节为单位)。为了便于管理,在计算机硬件系统的内存存储器中,拥有大量的存储单元(以字节为单位)。为了便于管理,每一个存储单元都有唯一的编号,这个编号就是存储单元的每一个存储单元都有唯一的编号,这个编号就是存储单元的“地址地址”。类似于教学楼中的每一个教。类似于教学楼中的每一个教室需要一个编号(按楼层、顺序编号)。例如,对室需要一个编号(按楼层、顺序编号)。例如,对16位机,位机,DOS环境下的应用程序,其代码段、数环境下的应用程序,其代码段、数据段和堆栈段

18、放位于内存地址据段和堆栈段放位于内存地址0 x00000 xffff之间的之间的640k常规内存中。也就是说,程序中的某一变量,常规内存中。也就是说,程序中的某一变量,对应对应0 x00000 xffff范围内中的某些存储单元。范围内中的某些存储单元。2变量的地址和变量的值变量的地址和变量的值在程序中定义变量时,计算机就按变量的类型,为其分配一定长度的存储单元。例如在程序中定义变量时,计算机就按变量的类型,为其分配一定长度的存储单元。例如:int x,y;float z;目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.1 指针的概念指针的概念为了理解指针,必须了解计算机硬

19、件系统的内存地址的概念。为了理解指针,必须了解计算机硬件系统的内存地址的概念。(3)指针变量与它所指向的变量的关系指针变量与它所指向的变量的关系指针变量也是变量,在内存中也占用一定的存储单元,也有指针变量也是变量,在内存中也占用一定的存储单元,也有“地址地址”和和“值值”的概念。指针变的概念。指针变量的量的“值值”是另一实体(变量、数组或函数等)的地址。是另一实体(变量、数组或函数等)的地址。指针变量指针变量px与它所指向的变量与它所指向的变量x的关系,用指针运算符的关系,用指针运算符“*”表示为:表示为:*px即即*px等价于变量等价于变量x,因此,下面两条语句的作用相同。,因此,下面两条语

20、句的作用相同。x =100;/将将100直接赋给变量直接赋给变量x *px=100;/将将100间接赋给变量间接赋给变量x 目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.2 指针变量的定义和初始化指针变量的定义和初始化1.指针变量的定义指针变量的定义指针指针变量也是先定义后使用。指针变量的定义格式:变量也是先定义后使用。指针变量的定义格式:2.指针变量的初始化指针变量的初始化在指针变量定义时,所存放的地址是随机的,未经赋值的指针变量不能使用。可以在定义时对在指针变量定义时,所存放的地址是随机的,未经赋值的指针变量不能使用。可以在定义时对其初始化。一般地,指针的定义和初始

21、化形式为:其初始化。一般地,指针的定义和初始化形式为:目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针给指针变量赋值有以下两种方法。给指针变量赋值有以下两种方法。(1)在定义指针变量的同时就进行赋值在定义指针变量的同时就进行赋值 int x;int*px=&x;(2)先定义指针变量,之后再赋值先定义指针变量,之后再赋值 int x;int*px;px=&x;目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.3 指针变量的使用指针变量的使用指针变量的使用指针变量的使用“&”和和“*”两种运算来实现。两种运算来实现。1.取地址运算符取地址运算符“&”赋值语句赋值语

22、句:px=&x;就是就是通过取地址运算符通过取地址运算符“&”,把变量,把变量x的地址的地址赋给指针变量赋给指针变量px的,也就是使的,也就是使px指向指向x。于是就可以。于是就可以通过通过px间接访问间接访问x了。我们可以用图了。我们可以用图4-189形象地表形象地表示出来。示出来。目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针2.指针运算符指针运算符“*”px指向指向x后,就可以通过后,就可以通过px间接访问它所指向的变量间接访问它所指向的变量x了。了。*px就等价于就等价于x,所以,以下两条赋值,所以,以下两条赋值语句:语句:*px=10;x =10;是等价的,都是将是等

23、价的,都是将10赋给赋给x。同样,下两条语句:。同样,下两条语句:cout x endl;cout*pxendl;是以直接和间接方式输出变量是以直接和间接方式输出变量x的值,因此,输出结果都是的值,因此,输出结果都是10。目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针3变量的存取方式变量的存取方式(1)直接访问直接访问 在在计算机内,对变量的访问其实是通过存储单元的地址进行的,比如,当机器执行语句计算机内,对变量的访问其实是通过存储单元的地址进行的,比如,当机器执行语句coutx;时,机器先找到变量时,机器先找到变量x的地址(即的地址(即0 x2000),然后从),然后从 0

24、x20000 x2003这这4个地址所对应的存储单个地址所对应的存储单元中的数据元中的数据10(即变量(即变量x的值)取出,然后再输出。前面对变量的存取操作都是这种访问方式进行的值)取出,然后再输出。前面对变量的存取操作都是这种访问方式进行的的。(2)间接访问间接访问假设假设px是整型指针变量,它被分配到是整型指针变量,它被分配到0 x20180 x201B单元,其值可以通过赋值语句单元,其值可以通过赋值语句“px=&x;”得到。得到。目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.4 指针变量的自加、自减运算指针变量的自加、自减运算指针的自加、自减运算不同于普通变量的自

25、加、自减运算,即它不是简单的加指针的自加、自减运算不同于普通变量的自加、自减运算,即它不是简单的加1、减、减1。而是对。而是对应于内存地址的偏移量实施的,偏移量会随指针类型的不同而异应于内存地址的偏移量实施的,偏移量会随指针类型的不同而异。4.6.5 指针与数组指针与数组指针和数组有着极为密切的联系。引用数组元素可以用下标法,也可以用指针法,两者相比而指针和数组有着极为密切的联系。引用数组元素可以用下标法,也可以用指针法,两者相比而言,下标法易于理解,适合于初学者;而指针表示法有利于提高程序执行效率。言,下标法易于理解,适合于初学者;而指针表示法有利于提高程序执行效率。1数组的指针数组的指针数

26、组在内存中的起始地址叫数组的指针。数组元素的指针是其元素在内存的起始地址。数组在内存中的起始地址叫数组的指针。数组元素的指针是其元素在内存的起始地址。2指向数组的指针变量指向数组的指针变量类似于指向变量的指针。类似于指向变量的指针。目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针3.数组元素的引用数组元素的引用若有如下声明语句:若有如下声明语句:int data6;int *p=data;则则p是指向数组是指向数组data的指针变量,指针和数组之间有如下恒等式:的指针变量,指针和数组之间有如下恒等式:data+i =&datai =p+i (i=0,1,5)datai =*(da

27、ta+i)=*(p+i)=pi (i=0,1,5)所以,引用数组第所以,引用数组第i个元素,有以下几种访问方式个元素,有以下几种访问方式:目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针(1)下标法下标法 datai /数组名下标法:数组名下标法:pi/指针变量下标法指针变量下标法:(2)指针法指针法 *(data+i)/数组名指针法:数组名指针法:*(p+i)/指针变量指针法:指针变量指针法:目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.指向字符串的指针指向字符串的指针用双引号用双引号“”括起来的字符序列叫字符串,例如括起来的字符序列叫字符串,例如welco

28、me to Shenzhen University!。字符。字符串在内存中以串在内存中以0结尾。因为一个字符指针可以保存一个字符的地址,所以也可以定义和初始化它。结尾。因为一个字符指针可以保存一个字符的地址,所以也可以定义和初始化它。例如:例如:char *pc=GOOD MORNING;该语句定义了字符指针该语句定义了字符指针pc,并且用字符串的第一个字符的地址来初始化它,此外为字符串本身,并且用字符串的第一个字符的地址来初始化它,此外为字符串本身也分配了内存单元。假设字符串也分配了内存单元。假设字符串GOOD MORNING存放在从存放在从0 x2000开始的内存单元中。开始的内存单元中。

29、pc被分被分配了一个地址,配了一个地址,pc指向字母指向字母G。目 录 页第第4 4章章复合数据类型复合数据类型4.6 指 针4.6.6 指针与结构指针与结构一个结构体类型变量在内存中占有一段连续存储单元,这段内存单元的首地址,就是该结构体一个结构体类型变量在内存中占有一段连续存储单元,这段内存单元的首地址,就是该结构体变量的指针。可以用一个指针变量指向一个结构变量,或指向结构数组中的元素。对结构变量的操变量的指针。可以用一个指针变量指向一个结构变量,或指向结构数组中的元素。对结构变量的操作就可用结构指针变量操作。作就可用结构指针变量操作。1.指向结构变量的指针指向结构变量的指针结构变量的首地

30、址就是该结构变量的指针。用地址运算符结构变量的首地址就是该结构变量的指针。用地址运算符&,就可获得结构变量的指针。指向,就可获得结构变量的指针。指向一个结构变量的指针变量称为结构指针变量。一个结构变量的指针变量称为结构指针变量。2.指向结构体数组的指针指向结构体数组的指针可以用指向结构体数组的指针来访问结构体数组的元素。可以用指向结构体数组的指针来访问结构体数组的元素。目 录 页第第4 4章章复合数据类型复合数据类型4.7 情景应用训练项目4.7.1 项目项目1:不同进制数的转换:不同进制数的转换【问题描述问题描述】在在C+程序中,一般使用十进制数,有时为了提高效率或其它一些原因,还要使用二进制数。程序中,一般使用十进制数,有时为了提高效率或其它一些原因,还要使用二进制数。本实例将平时纸上运算过程用程序实现,运行结果如图本实例将平时纸上运算过程用程序实现,运行结果如图4-245所示。所示。图图4-245 4-245 十进制数与二进制数的转换十进制数与二进制数的转换

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

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(面向对象程序设计C++第4章-复合数据类型.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|