pycharm定义空的二维数组_C/C++之二维数组详解!学习使我快乐~-程序员宅基地

技术标签: 不能分配常量大小为0的数组  pycharm定义空的二维数组  找出数组中被其他元素整除的元素  

e7bdadb0ca472926f8453818694d4e42.png

一、二维数组的介绍

当数组元素具有两个下标时, 该数组称为二维数组。 二维谁可以看做具有行和列的平面数据结构。

二、二维数组的定义

定义二维数组的形式:

数据类型 数组名[常量表达式1][常量表达式2] ;

数据类型是数组全体元素的数据类型, 数组名用合法的标识符表示, 两个整型常量表达式可以理解为分别代表行数和列数, 与一维数组相同, 数组元素的下标一律从 0 开始。例如:

inta[3][5] ;

该语句表示:

①. 定义了一个二维数组a, 其数据类型为int型 ;

②. a数组有3行5列, 共能容纳 3*5 = 15 个 int 型的数据 ;

③. a数组的行下标为 0, 1, 2, 列下标为 0, 1, 2, 3, 4 , 所有元素的位置可表示为:

a[0][0], a[0][1], a[0][2], a[0][3], a[0][4]

a[1][0], a[1][1], a[1][2], a[1][3], a[1][4]

a[2][0], a[2][1], a[2][2], a[2][3], a[2][4]

④. 程序运行时将为a数组在内存中开辟 3*5* 4(字节) = 60个字节连续的存储单元 ;

三、二维数组的使用

同一维数组一样, 引用二维数组的元素, 也是引用他的数组元素, 数组元素的形式为:

数组名[行下标][列下标] ;

例如, 若定义 int a[3][5], i = 2, j = 4 ; 则下列引用都是合法的:

a[0][0]、a[2][4]、a[i][j]、a[i-1][j]、a[1][j-1]

使用举例:

1>. 输入一个 2x3 大小的二维数组, 输入完毕后再全部输出

ec4ccc546280a32bcb5e4e23bf5e627d.png

四、二维数组的初始化

二维数组初始化的形式为:

数据类型 数组名[常量表达式1][常量表达式2] = { 初始化数据 } ;

在 { } 这给出各数据元素的初始值, 各初值之间用逗号隔开。 把 { } 中的初值依次赋给各数组元素。

有如下几种初始化方式:

1>. 分行进行初始化

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

在 { } 内部再用 {} 进行分开, 第一组 {} 中的初始值 1, 2, 3 是下标为 0 行的3个元素的初值。 第二对 {} 中的值 4, 5, 6 是下标为 1 行的 3 个元素的初值, 相当于执行如下语句:

a[0][0] =1; a[0][1] =2; a[0][2] =3;
a[1][0] =4; a[1][1] =5; a[1][2] =6;

注意: 初始化的数据个数不能超过数组元素所能容纳的个数, 否则会出错。

2>. 不分行初始化

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

把 { } 中的数据依次赋值给 a 数组各元素(按行赋值), 即:

a[0][0] =1; a[0][1] =2; a[0][2] =3; a[1][0] =4; a[1][1] =5; a[1][2] =6;

3>. 为部分数据元素初始化

inta[2][3] = { {1,2}, {4} } ;

第一行只有2个初值, 按顺序分别赋值给 a[0][0] 和 a[0][1], 第二行的初值 4 赋给 a[1][0]。

4>. 省略第一维的定义, 但不能省略第二维的定义

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

系统能够根据初始化元素的个数和第二维的长度来确定第一维的长度。

一般, 省略第一维定义时, 第一维的大小按如下规则确定:

初值个数能被第二维整除, 所得的商就是第一维的大小 ;

若不能整除, 第一维的大小为商再加 1。例如:

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

等价于:

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

若分行初始化, 也可以省略第一维的定义, 如:

int a[][3] = { {1, 2}, {4} } ;

其中 { } 中又包括 两个 {} , 这代表数组 a 的第一维大小为 2。

五、二维数组应用举例

如图, 将 图a 中所示的数组转成如 图b 所示的情况(也成矩阵转置):

70f44433b496a88185ada830c2c3a82e.png

  解决代码:

2fa8def7597fd01ccdd74adb9da23319.png

六、二维字符数组

二维字符数组常用来存放字符串, 二维字符数组每一行可以看做一维字符数组, 即二维字符数组的每一行可以存放一个字符串。

1>. 二维字符数组的定义:

二维字符数组的定义与一般二维数组的定义方式相同, 只是数据类型为 char。例如:

char a[3][10] ;

二维字符数组 a 有2行5列, 每一行可以存放长度小于或等于4的字符串(不要忘了要给字符串结束标识符留一个位置)。

2>. 二维数组的初始化:

和一维字符数组一样, 二维字符数组也可以在定义时初始化, 如:

chara[3][10] = {"Hello","world","C++" } ;
chara[][10] = {"Hello","world","C++"} ;//第二维同样不可省略

将二维字符数组图示展开如下(二维字符数组a, 3行10列):

a5737ee1630855c253f651b71b4624c5.png

3>. 二维字符数组的使用

由于在二维字符数组每个字符串单独占一行, 所以可以用 a[n] 引用该二维数组字符中第 n 行的字符串, 也可以用 a[i][j] 引用某行某列中的单独一个字符串。

示例: 输入二维字符数组中每行中的字符串

c247ad10b0c7294a23b807b17d05a9ef.png

C++语言对数组的维数没有限制, 因此你还可以根据一维和2维的规律使用 3 维数组或更高维的数组, 但是在高维数组上的处理比较难理解, 不熟练的情况下容易出错, 因此对于 3 维以上的数组请酌情使用。

我是一名从事了10年开发在退休边缘垂死挣扎的高龄程序员,最近我花了一些时间整理了一个完整的学习C语言、C++的路线,项目源码和工具。对于想学习C/C++的小伙伴而言,学习的氛围和志同道合的伙伴很重要,笔者推荐一个C语言/C++编程爱好者的聚集地>>>C/C++编程技术学习交流聚集地,还有素材笔记源码和志同道合的小伙伴们哦~

欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以一起学习!

关注我,带你遨游代码世界!最后分享一点小礼物给爱学习的小伙伴们

fb3604870b4e728ae4fd319bd8a5db6c.png
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39558317/article/details/110154567

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签