二维数组的定义和引用

对于二维数组的定义,跟一维数组是差不多的。
我们来看一个例子:
int a[2][3];
这个就是一个整型的二维数组,
第一维有两个元素,第二维有三个元素。
每一维的长度分别用一对方括号括起来。
我们不能写成这种形式:
int a[2,3]

其实我们可以把这个看成一个二行三列的矩阵,第一维表示行,第二位表示列。
如:
1 2 3
4 5 6

二维数组定义的一般形式为:
类型说明符 数组名[常量表达式][常量表达式]

其实我们把a[2]看成一个数组名,那么a[2][3]就是一个一维数组了。

我们在向二维数组中输入元素时,就像上面两行三列中的数字顺序一样进行输入的,
它们分别对应着:
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]

虽然我们可以在直观上看到用矩阵表示的二维数组,但在内存的存放中,二维数组的数据是连续存放的,呈线性排列。

就像下面这张图:
在这里插入图片描述
对于二维数组的引用,
我们直接就按照行和列来确定元素位置,
在二维数组第第一个括号内的数表示行,第二个括号内的数表示列。

对于出现在表达式中的数组元素,也是可以进行赋值的
比如:
b[1][2]=a[2][3]/2
这个表示的就是数组b的第二行第三列元素等于数组a的第三行第四列元素/2。
就是后者的值/2再赋值给前者。

在引用数组元素时,下标值应在已定义的数组大小的范围内,
超出的就不存在。
比如a[3][4]的行就在0 ~ 2的范围内,列在0~3的范围内
元素a[3][4]不在数组a的范围内,
定义数组和数组的引用是不同的。
在这里插入图片描述

对于二维数组的初始化,跟一维数组还是有些区别的。
下面是几种赋值方法:

1.分行给二维数组赋初值:
例如:
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
这个赋值方法我们要注意,最外面的{}表示的是整体,
内部的每一个{}表示一行,内部的{}内的是该行的元素。
上面的例子中数的大小也是数的赋值顺序。
要注意各个{}间用逗号隔开,各元素间也用逗号隔开。
2.我们也可以直接将所有元素写在一个花括号内,
如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
系统会自动进行分行。
3.可以对部分元素赋初值。
这个跟一维数组一样,未赋值的元素统一以0保存。
如:
int a[3][4]={{1},{5},{9}};
这个是对每一行的第一列元素赋初值,其余元素值自动设定为0.
4.如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第1维的长度可以不指定,但第二维的长度不能省去。
如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
等价。
系统会自动根据所输入的元素计算行数,即第一维的数。
在定义时也可以只对部分元素赋初值而省略第1维的长度,但需要分行赋值。
如:
int a[][4]={{1,2,3},{},{9,10}};

本篇内容到此结束。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值