你好,C++(12)怎样管理多个类型同样性质同样的数据?3.6 数组

时间:2022-07-15 16:12:02

3.6  数组

学过前面的基本数据类型之后,我们如今能够定义单个变量来表示单个的数据。比如,我们能够用int类型定义变量来表示公交车的216路;能够用float类型定义变量来表示西红柿3.5元一斤。

可是,除了单个孤立的数据之外,现实世界中另一类批量数据。比如,一个公司全部员工的工资,这些数据的数据类型同样(都是int类型),性质同样(都表示员工的工资),数量非常多(成千上万员工的工资)。而且往往形成一个有意义的数据集合(员工工资)。针对这类的批量数据,单独地定义一个一个的变量来表示显然是行不通的。

为此,C++提供了数组这样的构造型数据类型来表达批量数据,它将这些数据组织起来形成一个数据序列。让这些数据排排坐。吃果果,极大地方便了批量数据的处理。

3.6.1  数组的声明与初始化

在C++中,定义一个数组的方法同定义一个变量的方式很相似,不同的是,变量名变成了数组名。而在数组名之后,我们用中括号“[]”引出了表示数组中数据元素个数的常数。

其详细语法形式例如以下:

数据类型 数组名[个数常量][个数常量]…;

当中,数据类型表示这一系列批量数据的类型。

比方。我们要定义一个能够保存多位员工工资的数组,而每一个员工工资数据都能够用int类型数据表示。那么整个数组的数据类型就是int类型;数组名一般是一个表明数组中数据含义的标识符。在这里,数组中的数据都是员工工资,所以我们能够用arrSalary作为数组名。

当中,arr表示这是一个数组(array),而Salary则表示数组中的数据都是工资;数组名后中括号里的个数常量则表示这一系列批量数据的个数。

比方。这个公司有100000位员工,我们须要在数组中保存100000个工资数据,那么这个个数常量自然就是100000。另外须要注意的是,这个个数常量必须大于0,而且必须是常数。

依据上面的分析,我们能够这样来定义用以保存100000个员工工资数据的数组:

// 保存100000个员工工资的数组
int arrSalary[100000];

在定义数组的同一时候。也能够利用“{}”对数组进行初始化。

比如:

// 定义数组并进行初始化
int nArray[5] = { 1,2,3,4,5 };

这行代码在定义一个长度为5的整型数组nArray的同一时候,用“{}”把1、2、3、4、5分别赋值给数组中的5个元素,以此来完毕数组的初始化。当然。假设不须要对数组中的全部数据都赋初始值。也能够仅对数组的前面部分元素赋值。而剩余的未指定初始值的数据。会被赋值为0或是这样的数据的默认初始值。

比如:

// 给定数组中前6个元素的初始值,剩下94个数据被赋值为0
int nBigArray[100] = { -10, 23, 542, 33, 543, 87 };

尽管我们能够利用“{}”在定义数组的同一时候对数组元素赋初始值。但是数组的数据元素往往较多。要想使用“{}”完毕当中全部数据的赋值,往往是不太现实的。很多其它的时候,我们是利用“{}”将数组中的全部元素都赋值为0,完毕数组使用前的清零操作。比如:

// 将nBigArray数组中的全部元素赋值为0
int nBigArray[100] = { 0 };

知道很多其它:多维数组

数组定义中的中括号“[ ]”用于确定数组的维数。

在数组名后有几个“[ ]”就表示这是一个几维数组,而一个数组的维数,往往代表了当中数据的分类次数。比方。我们要表示一个学校全部学生的成绩,我们往往先把全部学生成绩依照年级分成三个年级,然后每一个年级又能够依照班级分成10个班级。而每一个班级又有30名学生。

这样,经过三次分类,我们就能够用一个三维数组来保存一个学校全部学生的成绩:

// 记录学生成绩三维数组
int arrScore[3][10][30];

3.6.2  数组的使用

定义好数组后,我们就相当于拥有了多个变量,能够引用数组中的数据元素来进行运算。

要想訪问数组中的各个数据。我们通过在数组名后的中括号里给定数组下标来实现。

所谓数组下标,它代表了要訪问的数据在数组中的位置。

要注意的是,这个表示数据位置的下标是从0開始记数的。比方。在我们前面定义的记录员工工资的arrSalary数组中。第一个数据是老板的工资,我们就能够通过例如以下的方式来读写訪问第一个数据:

// 数组中第一个数据表示老板的工资,用下标0表示数组的第一个数据
// 赋值为1,表示老板的工资为1
arrSalary[0] = 1;
// 读取数组中的第一个数据,输出老板的工资
cout<<"老板的工资是:"<<arrSalary[0]<<endl;

这里我们能够看到,通过在数组名之后的中括号里给定0这个下标,我们能够像读写普通变量一样地来读写数组中的第一个数据。以此类推,要想訪问数组中的第二个数据。数组下标就应该是1,要想訪问第n个数据,下标就应该是n-1。比如:

// 数组中的第二个数据表示老板娘的工资, 给定下标1訪问
arrSalary[1] = 99999;
// 往后依次就是各个员工的工资
arrSalary[2] = 2000;
// …

在使用数组下标时。另外须要注意的一个地方是,下标必须大于等于0小于数组定义时的个数常数。简单来讲。一个长度为n的数组,其下标的取值范围是[0。n-1]。假设下标的取值超出了这个范围。就会訪问到数组以外的内存区域。引起数组訪问越界的错误,轻则造成数据读写错误,严重时甚至会导致程序崩溃。而且,这样的错误极具隐蔽性,往往非常难发现。所以我们一開始在使用数组时。就一定要时刻注意防止数组訪问越界。

数组下标与数组中数据元素的相应关系例如以下图所看到的:

你好,C++(12)怎样管理多个类型同样性质同样的数据?3.6 数组

图3-3 数组中数据元素与下标的相应关系

相同的道理。对于二维数组、三维数组等多维数组。相同能够通过给定多个下标来訪问数组中的数据元素。比如:

// 第一个年级。第二个班级,第26位同学的成绩是82
arrScore[0][1][25] = 82;

这里我们能够看到。通过下标对数组中元素进行读写訪问,就像使用一个单独的变量一样简单。有了数组的帮忙。我们在描写叙述大量性质同样的数据时。就无须单独地定义多个同样类型的变量,而仅仅需定义一个能容纳须要处理数据的数组,然后通过不同的下标就能够訪问到不同的数据。也就像拥有多个单独变量一样方便。