一维空间是一条线,数学中用一条数轴来表达,二维空间是一个平面,数学中用平面坐标来表达,那么二维数组又是什么样的呢?
一,线与面(一维数组和二维数组)
我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点,而所有的数据都是存在这条线上。如果我们用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能存在表格里,如图:
我们把二维数组的两个下标分别称为行下标与列下标,在前面的是行下标,后面的是列下标。那么什么时候要用到数组呢?一般有两种情况,一种是描述一个二维的事物,比如用1表示墙,用0表示通路,可以用二维数组来描述一个迷宫地图,用1表示有通路,用0表示没有通路,可以用二维数组来描述几个城市之间的交通情况。还有一种是描述多个具有多项属性的事物,比如有多个学生,每个学生有语文,数学,英语3门成绩,我们就可以用二维数组来描述。
对于第二种情况,要注意各项属性应该是同一种数据类型,比如3种科学的成绩都是整数。如果出现了字符串属性,就不能将它们组合到一个二维数组里去,所以不要企图将不同数据类型的属性整合到一个二维数组中去。
二,二维数组的声明与初始化
二维数组的声明与一维数组的声明类似,不同之处在于多了一个下标,语法为;
数据类型 数组名 [行数] [列数]
二维数组的下标也都是从0开始的,
二维数组的初始化分为2种,一种是顺序初始化,另一种是按行初始化,我们来写一段程序,运行一下就能够对它们有所了解了。
从上图代码中我们可以看出,所谓按顺序初始化就是先从左向右在由上而下的初始化,即是第一行所有数组初始化完了以后再对第二行进行初始化,而安行初始化则是用一对大括号来表示每一行,跳过前一行没有初始化的元素,在行内从左到右的初始化,对于没有初始化的值,则是一些不确定的值。
三,省略一维的大小
我们之前学到,一维数组的大小可以省略,可是二维数组的元素个数是行数与列数的乘积,如果只告诉计算机元素个数,计算机无法知道这个数组是几行几列。所以C++规定,在声明和初始化一个二维数组时,只有第一维(行下标)可以省略。例如;
int array [][3] ={1,2,3,4,5,6}
相当于:
int ayyay [2][3]={1,2,3,4,5,6}
四,二维数组在内存中存储的情况
先前已经说明,内存是依靠地址来确定内存中唯一一个存储单元的,它只包含一个参数,所以在内存中,所有的数据都像一维数组那样顺序存储的,那么具有两个下标的二维数组是怎样存放的呢?
在内存中,先将二维数组的第一行数据按顺序存储,接着就是第二行的数据,然后就是第三行……以此类推。
本篇完!喜欢的朋友可以收藏与转发,欢迎大家在下方评论留言,下一篇《内存里的快捷方式(指针)》