[理学]C++大学基础教程第五章

上传人:油条 文档编号:49628647 上传时间:2018-07-31 格式:PPT 页数:78 大小:344.50KB
返回 下载 相关 举报
[理学]C++大学基础教程第五章_第1页
第1页 / 共78页
[理学]C++大学基础教程第五章_第2页
第2页 / 共78页
[理学]C++大学基础教程第五章_第3页
第3页 / 共78页
[理学]C++大学基础教程第五章_第4页
第4页 / 共78页
[理学]C++大学基础教程第五章_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《[理学]C++大学基础教程第五章》由会员分享,可在线阅读,更多相关《[理学]C++大学基础教程第五章(78页珍藏版)》请在金锄头文库上搜索。

1、C+大学基础教程第5章 数组*15.1 数组基本概念 5.2 数组元素的下标 5.3 数组初始化 5.4 数组的大小和越界数组 5.5 字符数组 5.6 向函数传递数组 5.7 多维数组第5章 数组Date25.1 数组基本概念*35.1数组基本概念n数组是具有一定顺序关系的若干相同类 型元素的集合。n组成数组的变量称为该数组的元素。n数组元素都有相同的变量名(数组名) ,但是有不同的下标。Date4一维数组n一维数组的说明方法为数据类型加数组 名,再加方括号,里面含有元素个数。 即: 类型说明符 数组名常量表达式;n数组名的命名规则和变量名相同。n常量表达式表示数组元素的个数,即数 组长度。

2、Date5一个字符数组例子n下面的代码说明一个字符数组:char a 5;n即:字符数组“char a5”,存储该数组 占5个字节。每个元素的类型是字符型。 数组下标从0开始,分别是a0,a1, a2,a3,a4。n请注意:数组元素的下标从 0 开始。并且 ,a5不属于该数组的空间范围。Date6数组在内存中的存放n 数组元素都是 存放在一片连 续的内存单元 中的。n下图显示 char name=”Ray Krebbs”的内 存情况Date75.1.2数组的定义n和变量相同,数组也必须先定义,后使用定义数组的一般格式是:n类型说明符 数组名常量表达式;n下面的语句定义了一个有五个整数的数组:i

3、nt ages5;n 数组ages此时的内容是不确定的,编程中 不能想当然地认为它全为0或其他什么值。Date8定义数组应包括的几个方面n确定数组元素的类型n可以是如整型、浮点型等简单类型,也可以是结 构体、类等用户自定义类型。n确定数组的名称n由“标识符”指定,数组名是一个常量,代表着 数组元素在内存中的起始地址。n确定数组的结构n包括数组的维数(有几个常量表达式),维的大 小等,也就是常量表达式的具体形式。常量表达 式的值必须是正整数。Date9错误的数组定义语句nvoid VoidArray10; /void不可以做数组类型nint a=9; float floatArraya; /下标

4、表达式不可以是变量nchar charArray1.5+1.5; /3.0不是整数Date10例5.1 定义一个含10整数的数组n解:以ARRAY命名的数组,用100至109对数组元 素赋值,并对其求和。需要在一个循环中使用数 组。这是使用数组最经常的方式。nvoid main()n int ARRAY 10;n int sum=0;n for (int i=0;inusing namespace std;nint array15=1,2,3;nstatic int array25=1;nvoid main()n int arr15=2;n static int arr25=1,2;n int

5、 n;n cout void main() float temp5; temp0=31.3; temp1=28.7; temp2=32.2; temp3=34.5; temp4=19.7; coutnusing namespace std;nvoid main()n int a=1,2,4,8,16;n for(int i=0; i void main() char str18=112,114,111,103,114,97,109,0 ;char str28=P,r,o,g,r,a,m,0 ;char str38=“program“;char str4=“program“;for (int i

6、=0;i using namespace std; void main() int a=0;char chArray30;cinchArray;for(int i=0; chArrayi!=0; i+)cout chArrayi;a+;cout endl;cout“输入的字符数是:“aendl; Date485.6 向函数传递数组*495.6 向函数传递数组n无论何时,将数组作为参数传给函数,实际 上只是把数组的地址传给函数。n物理上,把整个数组放在栈中是不合理的, 因为栈大小是一定且有限的。n如果把传送给函数的整个数组都放在栈中(内 存的大块复制),则很快会把栈空间用光。Date505.6.

7、1传递给标准库函数nC+中有一个memset()的函数,它可以一字节 一字节地把整个数组设置为一个指定的值。n memset()函数在 memory.h头文件中声明, 它把数组的起始地址作为其第一个参数,第二 个参数是设置数组每个字节的值,第三个参数 是数组的长度(字节数,不是元素个数)。n其函数原型为: void * memset(void *,int ,unsigned); 其中void*表示地址。Date515.6.2传递给自定义函数n让一个函数求数组元素的和n需传递一个数组参数和数组大小参数因为从传递的数组参数(地址)中,没有数 组大小的信息。Date52例5.12 数组名作为函数的形

8、参nusing namespace std;nint sum(int , int);nvoid main()nstatic int ia5=2,3,6,8,10;nint sumOfArray;nsumOfArray=sum(ia, 5);ncout “数组元素的和等于 : ”n sumOfArray endl;n 运行结果为; 数组元素的和等于: 29 int sum(int array, int len) int iSum=0; for(int i=0; ilen; i+) iSum+=arrayi; return iSum; Date53注意nsum()函数以整数数组作为第一个参数, 以

9、整数作为第二个参数。n由于传递数组名实际上传递的是地址, 所以函数原型中,数组参数的书写形式 无须在方括号中写明数组大小。n如果写明了数组大小,编译器将忽略之Date545.7 多维数组(只需要掌握到2维)*555.7.1理解多维数组n一维数组是多个数值的单列表示,而多 维数组则是数值的表格,甚至多表格表 示,它具有多个下标值,最常用的表格 是二维表格(具有两个下标)。Date56例子n假定要记录一个垒球队中每个队员的击球数。队中有6 个队员,进行了3场比赛。表中所示为击球记录。队员姓 名比赛1比赛2比赛3张大明222李方春333林志松222崔明东111刘屈武000安度璧111Date57班号

10、12 3 1张大明李方春 林志松 2崔明东刘屈武 安度璧 .3456Date585.7.2多维数组的表示方式n 表示多维数组时,你必须让C+明白数组 具有多维。多个下标,每个下标代表一个 维、并用中括号括起。n例如,可使用下面的多维数组声明一个6行 3列的整型数组teams: int teams63; /二维数组Date59表5.2球队数组的下标nteam表具有18个元素,元素下标值如下表000000010101020202101010111111121212Date60总元素个数n多维数组的总的元素个数可以通过下标相乘 获得。n假如你要记录年度使用的账单,如下数组声 明所示,nfloat u

11、tilities124;n记录12个月中四项开支的账单,数组元素为 浮点类型。12乘以4得48,于是这个数组有 48个元素。Date615.7.3数组在内存的映象nC+存储多维数组的方式与绝大多数其 他的编程语言略有不同。n通过使用下标,不了解多维数组的内存 映象也可以对其进行操作。n理解数组在内存中的形式,这对编制高 级应用程序很有用处。Date62传递和接收多维数组n二维数组实际上是“数组的数组”,它 以行和列的形式出现,实际上还是一个 一维数组,只不过数组的每个元素的类 型不是整型,浮点型或字符型,而是另 外一个数组。n 传递和接收多维数组关键在于应明白 多维数组是数组的数组。C+通过地

12、址 参数传递数组,多维数组也不例外。Date63例子一个 scores的56的整型数组,把 scores传 给print_it()的函数: print_it ( scores ); /pass table to a function函数print_it()必须知道所接收参数的类型 以及该参数是一个数组,如果传递的参数 是一维数组,可以如下编写语句:print_it (int scores); 或 print_it (int scores10);Date64C+按行存储多维数组n 通常,你无需过多考虑表格的物理存储 方式,多维表即是元素为数组的数组,编 程时只要用下标表示它们的行、列位置就 行了

13、。n 多维数组按行存储。考虑一个44的表 格,图5.4所示为这个表的直观映象,二维 表内存映象依然是顺序的存储。Date65二维表的内存映象nC+按行把多维数组 映射到线性内存n图示一个44的数组nint table44的内存映象Date665.7.4 定义多维数组nC+是宽松的,它允许在说明部分,初 始化并定义多维数组。和一维数组一样 ,在初始化多维数组时要使用大括号。 因为多维数组是数组的数组,所以在初 始化时要使用嵌套的括号。Date67例子 初始化三个数组:aral,ara2和 ara3。n int aral58, 5, 3, 25, 41;n int ara224=4, 3, 2,

14、1, 1,2,3,4;n int ara334=l,2,3,4, 5,6,7,8, 9,10,11,12;Date68以一维数组的形式进行初始化nC+亦允许多维数组以一维数组的形式进行 初始化,但必须注意要按行排列 下面是ara2和ara3的另一种初始形式:n int ara224=4, 3, 2, 1,1,2,3,4;n int ra334= l,2,3,4,5,6,7,8,9,10,11,12;Date69二维数组看作是 一维数组的一维数组n一维数组的4个元素是ara_name0 ara_name3。每一个元素则是其对应的 一维数组的首地址。Date70Arra0int Arra32Arr

15、a1.Arra00Arra01Arra10Arra11Arra20Arra21Arra2Date715.7.5表格与for循环n嵌套循环适用于多维数组n注意到for循环的循环次数与数组的下 标数目相同,外层循环代表第一个下标 (行下标);内层循环代表第二个下标(列 下标)。n嵌套for循环将遍历表中的每一个元素 。Date72例5.13嵌套for循环处理多维 表int main() for (row=0;row2;row+) for (col=0;col4;col+)coutrow” ”col“n“; 输出结果 0 0 0 1 0 2 1 0 1 1 1 2Date73注意n表格的数据输入可以使用cin(),get()或其他 函数,也可以在说明表格时为元素赋值。n通常使用来自磁盘上的数据文件。不管使 用什么方法存储多维数组的数值,都可以 使用嵌套for循环遍历每个元素Date74例5.15 输出带标题的二维表格void main()

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号