资源描述:
《c++完全讲义ppt unit05》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、本章将深入学习数组包括多维数组的知识和应用,以及它们与指针的关系。C++语言拥有在运行时获得变量地址和操纵地址的能力,这种可用来操纵地址的变量类型就是指针。指针可以用于数组,用于内存访问,还可作为函数的参数。第五章数组与指针第五章数组与指针5.1数组5.5数组与指针5.4this指针5.3指针与地址5.2多维数组5.7多级指针与多维数组(选读)5.6字符串5.1数组C++的数据类型:基本数据类型亦称内置数据类型。C++为它们提供了内置的支持(协助函数,helperfunction),以完成各种允许的运
2、算。也就是说基本数据类型也是一个类:有数据有操作,两者是封装起来的。在C++的标准库中支持基本类抽象的组合,如字符串类,复数类等标准库类类型。在内置数据类型和标准库类类型之间是复合类型(Compoundtype),特别是指针和数组类型。5.1数组5.1.1数组、数组元素及其存储方式5.1.2数组名作为函数参数5.1.3数组的应用——回溯算法(选读)5.1.1数组与数组元素及其存储方式数组的引入:数组(array)是一种顺序容器(sequencecontainer),是由单一类型元素组成的一个有序集合:
3、intfibon[10]={0,1,1,2,3,5,8,13,21,34};01232134fibon[0]fibon[1]fibon[2]fibon[3]fibon[8]fibon[9]图5.1数组在内存中的存储数组名为fibon,这是一个包含10个元素的整型一维(dimension)数组,其第一个元素为fibon[0],存放0,最后一个元素为fibon[9],存放34。数组元素的访问方式:通过下标操作符(subscript),按元素在数组中的位置进行访问,称为索引访问(indexing)或下标访问
4、(subscripting)。参见图5.1。注意:1:数组是一种组合类型,是不能作为一个整体进行访问和处理的,只能按元素进行个别的访问和处理。2:C++数组第一个元素的下标为0,而不是1,且下标表达方式是固定的。3:数组元素在内存中是从低地址开始顺序排列,各元素的存储单元占用内存大小相同,各元素的存储单元之间没有空隙,可以从数组第一个元素存储单元的起始地址计算出任意一个元素存储单元的起始地址。5.1.1数组与数组元素及其存储方式【例5.1】找出整型数组各元素中的最大数和最小数。数组中的数由随机数函数r
5、and()产生。5.1.1数组与数组元素及其存储方式结构数组定义:structkeyword{charword[16];//关键字intcount;//该关键字将在源程序中出现的次数};初始化:keywordkeytab[]={"auto",0,"break",0,"case",0,"char",0,……"unsigned",0,"volatile",0,"while",0,};结构数组初始化时可以用括号来区分每一个结构,例如:keywordkeytab[]={{"auto",0},{"break",
6、0},{"case",0},……};当提供了数组中所有结构值时,不必用这种括号的形式。5.1.1数组与数组元素及其存储方式对象数组定义:CGoodsgoods[3];该商品类对象数组包含3个商品对象数组元素,系统调用3次默认的构造函数来建立这3个商品对象数组元素。初始化:应该完整书写各个元素的构造函数及成员数据初值:CGoodsgoods[3]={CGoods("夏利2000",30,98000.0),//调用三参数构造函数,初始化goods[0]CGoods("桑塔纳2000",164000.0),
7、//调用两参数构造函数,初始化goods[1]CGoods()//调用默认的构造函数,初始化goods[2]};5.1.2数组名作为函数参数数组名作为参数:数组名可以作为函数的参数。在函数调用时传递实参数组的首地址,所以在被调函数中对形参数组的处理实际就是对调用函数的实参数组的处理。C++只传递数组首地址,而对数组边界不加检查。这带来的好处是,函数对长度不等的同类数组都通用。如要指定长度可以设定另一个参数来传递数组元素的个数。【例5.2】字符数组与字符数组相连接5.1.3数组的应用——回溯算法(选读)
8、回溯法:回溯法的基本思想是,通过对问题的分析找出解决问题的线索,先在一个局部上找出满足问题条件的局部的解,然后逐步由局部解向整个问题的解的方向试探,若试探成功就得到问题的解,试探失败逐步向后退,改变局部解再向前试探。回溯法能避免枚举法的许多不必要的搜索,使问题比较快地得到解决。回溯法应用广泛,八皇后问题、迷宫问题、四色地图等等都可以用回溯法求解。【例5.3】八皇后问题:在8×8的国际象棋棋盘上安放八个皇后,为避免她们之间相互攻击,要求没有任何两个皇后在棋