二维数组初始化

对于一个M行N列的二维数组,可以看成是M行一维数组,一维数组是N列。例如 int array[3][2]; 是一个3行2列的二维数组,其实,如同3个一维数组,一维数组是2列。那么,对3行2列的二维数组可以初始化如下:

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

相当于:

(1) {1, 2}数据,赋给array[0][] 表示第 1行数组;

(2) {3, 4}数据,赋给array[1][] 表示第 2行数组;

(3) {5, 6}数据,赋给array[2][] 表示第 3行数组;

这种赋值方式,称为:分组赋值,每一组数据,赋给相应的一行数组元素。

二维数组的初始化赋值,还可以是连续赋值,例如:

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

此时,就把{1, 2, 3, 4, 5, 6}表示的一组数据,赋给二维数组。赋值的规则如下:

(1) array[3][2]表示3行2列数据;每一行是2个元素;

(2) 从{1, 2, 3, 4, 5, 6}中取出2个元素,赋给第一行元素;所以,第一行元素得到{1, 2}数据组,剩下{3, 4, 5, 6}数据组;

(3) 从{3, 4, 5, 6}数据组中取出2个元素,赋给第二行元素,所以,第二行元素得到{3, 4}数据组,剩下{5, 6}数据组。

(4) 从{5, 6}数据组中取出2个元素,赋给第三行元素,所以,第三行元素得到{5, 6}数据组,没有剩下任何数据。

(5) 最终,把初始化赋值的数据组划分成一行一行元素,设置到二维数组中。

注意:如果初始化赋值数据组的元素比二维数组元素少,例如:

int array[3][2] = {1, 2, 3};

此时,只够设置前3个元素,那么,剩下的数组元素,默认设置为0值。程序测试例子如下:

 

 

程序运行结果如下:

 

可以看到,对array数组和array1数组的赋值,都是对所有的元素设置了有效值。对array3数组的赋值,初始化赋值{1, 2, 3}数据组,只能够设置前3个数值元素,后面没有初始化值的数组元素,默认设置为0值。

在上面的例子中,初始化array1数组的时候,有:

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

那么,根据array1数组定义的列数为2,表示2个元素表示一行数据。所以,从初始化列表{1, 2, 3, 4, 5, 6}中取出2个元素来设置给一行数组。最终,根据列数是2,就可以2个元素划分为一组数据,得到{{1, 2}, {3, 4}, {5, 6}}这样的数据组。在这个划分数据的过程中,只有列数2对划分数据有影响,行数没有任何影响。

所以,我们可以在初始化定义数组的时候,不用给出行数的定义,例如:

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

此时,定义array1二维数组,定义数组的时候初始化,确定了列数之后,可以不用给出行数的定义。那么,根据列数是2,从初始化数值列表中,取出2个数据作为一行,得到{{1, 2}, {3, 4}, {5, 6}}数据组。此时,可以看到是3行数据组,那么,定义的数组就是有3行。程序测试例子如下:

 

程序运行结果如下:

 

可以看到,定义了二维数组a的列数是3,所以,一行数组存放3个元素。那么,第一行划分得到{1, 2, 3}数据,填充都第一行数组中;第二行划分得到{4, 5}数据;填充到第二行数组中。由于数组定义一行是3个元素,所以,第二行划分得到{4, 5}数据不够存放到a[1][2]元素,所以,a[1][2]元素用零填充;整个数组的长度是6个元素。

在上面的代码中,a[][]数组的元素是char类型,有6个元素。所以,数组使用sizeof()获取数组的容量,得到6个字节的容量。因为,一个char类型是占用1个字节,所以,6个元素就占用1*6 = 6个字节的容量。

  • 27
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦凯峰Linux编程学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值