c++ 二维数组初始化_c++入门篇(三十一),二维数组声明与初始化

一维空间是一条线,数学中用一条数轴来表达,二维空间是一个平面,数学中用平面坐标来表达,那么二维数组又是什么样的呢?

一,线与面(一维数组和二维数组)

我们用一个下标来描述一维数组中的某个元素,就好像在用数描述一条线上的点,而所有的数据都是存在这条线上。如果我们用两个下标,就能形成一个平面,犹如一张表格,有行有列,所有的数据就能存在表格里,如图:

57c3f50912f8b5c5bfe9eb8826b840ab.png

我们把二维数组的两个下标分别称为行下标与列下标,在前面的是行下标,后面的是列下标。那么什么时候要用到数组呢?一般有两种情况,一种是描述一个二维的事物,比如用1表示墙,用0表示通路,可以用二维数组来描述一个迷宫地图,用1表示有通路,用0表示没有通路,可以用二维数组来描述几个城市之间的交通情况。还有一种是描述多个具有多项属性的事物,比如有多个学生,每个学生有语文,数学,英语3门成绩,我们就可以用二维数组来描述。

对于第二种情况,要注意各项属性应该是同一种数据类型,比如3种科学的成绩都是整数。如果出现了字符串属性,就不能将它们组合到一个二维数组里去,所以不要企图将不同数据类型的属性整合到一个二维数组中去。

二,二维数组的声明与初始化

二维数组的声明与一维数组的声明类似,不同之处在于多了一个下标,语法为;

数据类型 数组名 [行数] [列数]

二维数组的下标也都是从0开始的,

二维数组的初始化分为2种,一种是顺序初始化,另一种是按行初始化,我们来写一段程序,运行一下就能够对它们有所了解了。

b558b03feee971d1b262dbe5278603db.png

从上图代码中我们可以看出,所谓按顺序初始化就是先从左向右在由上而下的初始化,即是第一行所有数组初始化完了以后再对第二行进行初始化,而安行初始化则是用一对大括号来表示每一行,跳过前一行没有初始化的元素,在行内从左到右的初始化,对于没有初始化的值,则是一些不确定的值。

三,省略一维的大小

我们之前学到,一维数组的大小可以省略,可是二维数组的元素个数是行数与列数的乘积,如果只告诉计算机元素个数,计算机无法知道这个数组是几行几列。所以C++规定,在声明和初始化一个二维数组时,只有第一维(行下标)可以省略。例如;

int array [][3] ={1,2,3,4,5,6}

相当于:

int ayyay [2][3]={1,2,3,4,5,6}

四,二维数组在内存中存储的情况

先前已经说明,内存是依靠地址来确定内存中唯一一个存储单元的,它只包含一个参数,所以在内存中,所有的数据都像一维数组那样顺序存储的,那么具有两个下标的二维数组是怎样存放的呢?

在内存中,先将二维数组的第一行数据按顺序存储,接着就是第二行的数据,然后就是第三行……以此类推。

本篇完!喜欢的朋友可以收藏与转发,欢迎大家在下方评论留言,下一篇《内存里的快捷方式(指针)》

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值