对于一个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行数组;

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

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

intarray[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) 最终,把初始化赋值的数据组划分成一行一行元素,设置到二维数组中。

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

intarray[3][2] = {1, 2, 3};

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

程序运行结果如下:

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

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

intarray1[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对划分数据有影响,行数没有任何影响。

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

intarray1[][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个字节的容量。

python初始化一个二维数组_二维数组初始化相关推荐

  1. C# 传递数组参数_一维数组_二维数组

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. python定义二维数组_二维数组的定义、初始化和输出,C语言二维数组详解

    本节学习二维数组.二维数组与一维数组相似,但是用法上要比一维数组复杂一点.后面的编程中,二维数组用得很少,因为二维数组的本质就是一维数组,只不过形式上是二维的.能用二维数组解决的问题用一维数组也能解决 ...

  3. 数组_二维数组的初始化方式

    数组的初始化方式总共有三种:静态初始化.动态初始化.默认初始化. [1]静态初始化 除了用new关键字来产生数组以外,还可以直接在定义数组的同时就为数组元素分配空间并赋值. eg: int[][] a ...

  4. c++ 二维数组_二维数组的声明2019_04_18

    -------------[感谢小郡提供的图片] [广告位招租] ---------------------------------------------------------------- -- ...

  5. mysql怎样存储二维数组_二维数组存储

    windows栈结构:向低地址处增长 如上图,首先定义一个二维数组 M[2][3] = {1,2,3,4,5,6},其首地址M[0][0]为:0x0012FE44,其元素依次向低地址方向存储.内存中存 ...

  6. 生成有时间限制的二维码_二维码竟有被用完的一天!看到截止日期后,网友:虚惊一场...

    生活在现如今这样一个智能化的时代中,二维码已经逐渐成为了人们日常生活中必不可少的存在.出门骑共享单车要扫码.购物买东西要出示微信.支付宝付款码.聊天加好友同样也是要用到二维码,可以说现在的生活中已经无 ...

  7. 用python做一个数据查询软件_使用Python实现NBA球员数据查询小程序功能

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于早起Python ,作者投稿君 一.前言 有时将代码转成带有界面的程序,会极大地方便 ...

  8. java 二叉堆_二叉堆(三)之 Java的实现

    概要 前面分别通过C和C++实现了二叉堆,本章给出二叉堆的Java版本.还是那句话,它们的原理一样,择其一了解即可. 二叉堆的介绍 二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两 ...

  9. 用python写一个程序控制其它软件_程序员:利用Python实现可控制肉鸡的反向Shell...

    一.初识 1.1 用 Python 实现一个可以管理多个肉鸡的反向 Shell,为什么叫反向 Shell 呢?反向就是肉鸡作为 Client 主动连接到我们的 Server 端,以实现对多个远程主机的 ...

最新文章

  1. NLP汉语自然语言处理入门基础知识介绍
  2. gram矩阵_推荐算法三视角:矩阵,图,时间线
  3. 2013年 833c语言程序 江南大学 (A卷)
  4. js url解码gbk_JS中对URL进行转码与解码
  5. Flutter PageView 属性使用详解
  6. 英伟达新研究:“狗生猫,猫生万物”的多模态无监督图像转换
  7. mysql 记录更新时间_MySQL表内更新时,自动记录时间
  8. 上海项目危机经历与感想
  9. matlab示波器的峰值测量,峰峰值定义_示波器峰峰值怎么看
  10. 使用RssHub为网页生成RSS订阅源
  11. win10未安装任何音频输出设备解决方案-记一次电脑的睿智问题
  12. Region Proposal by Guided Anchoring论文解读
  13. java 给图片加水印整理:2种方法
  14. html实现下拉跳转
  15. Tableau基础 Tableau 数据集的使用
  16. Runtime error: expected scalar type Float but found Double
  17. 免费!在线WORD转PDF的方法分享
  18. CANOE入门:CAPL语言(1)
  19. 垃圾收集之Remember Set(CardTable)
  20. 打包代码时候,ts打包错误

热门文章

  1. Docker之MySQL主从连接提示:Communications link failure
  2. linux常用基本命令
  3. 微信iOS新版支持手机、iPad、电脑同时在线
  4. JAVA方法3-方法的重载
  5. 基于色彩恒常( color constancy)特性的Frankle-McCann Retinex图像增强。
  6. #日常---恒权码与变权码
  7. JAVA中GUI在Button中设置显示文字时中文乱码问题
  8. java成神之路——网络编程
  9. 华为研究院19级研究员几年心得终成趣谈网络协议文档,附讲解
  10. 【将图片格式转换为调色盘模式——语义分割】