前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++ 获取数组大小、多维数组操作详解

C++ 获取数组大小、多维数组操作详解

原创
作者头像
小万哥
发布于 2024-04-10 12:31:09
发布于 2024-04-10 12:31:09
42400
代码可运行
举报
文章被收录于专栏:程序人生丶程序人生丶
运行总次数:0
代码可运行

获取数组的大小

要获取数组的大小,可以使用 sizeof() 运算符:

示例

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);

结果:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
20

为什么结果显示为 20 而不是 5,当数组包含 5 个元素时?

这是因为 sizeof() 运算符返回类型的大小(以字节为单位)。

要找出数组有多少个元素,必须将数组的大小除以它包含的数据类型的大小:

示例

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;

结果:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
5

使用 sizeof() 循环遍历数组

然而,通过使用上面示例中的 sizeof() 方法,现在我们可以创建适用于任何大小数组的循环,这更加可持续。

与其写:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
  cout << myNumbers[i] << "\n";
}

最好写成:

示例

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < sizeof(myNumbers) / sizeof(int); i++) {
  cout << myNumbers[i] << "\n";
}

请注意,在 C++ 版本 11(2011)中,还可以使用“for-each”循环:

示例

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
  cout << i << "\n";
}

了解不同的数组循环方式是很重要的,因为你可能在不同的程序中都会遇到它们。

多维数组

多维数组是数组的数组。

要声明一个多维数组,请定义变量类型,指定数组名称,后跟方括号,指定主数组有多少元素,然后再跟另一组方括号,表示子数组有多少元素:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][4];

与普通数组一样,你可以使用数组文字 - 在花括号内部的逗号分隔列表。在多维数组中,数组文字中的每个元素都是另一个数组文字。

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

数组声明中的每组方括号都会向数组添加另一个维度。像上面的数组被称为具有两个维度的数组。

数组可以具有任意数量的维度。数组的维度越多,代码就越复杂。以下数组具有三个维度:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

访问多维数组的元素

要访问多维数组的元素,请在数组的每个维度中指定索引号。

此语句访问 letters 数组中第一行(0)和第三列(2)的元素的值。

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

cout << letters[0][2];  // 输出 "C"

记住:数组索引从 0 开始:0 是第一个元素。1 是第二个元素,依此类推。

更改多维数组中的元素

要更改元素的值,请引用每个维度中元素的索引号:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

cout << letters[0][0];  // 现在输出 "Z" 而不是 "A"

循环遍历多维数组

要循环遍历多维数组,你需要为数组的每个维度使用一个循环。

以下示例输出 letters 数组中的所有元素:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 4; j++) {
    cout << letters[i][j] << "\n";
  }
}

此示例显示如何循环遍历三维数组:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

for (int i = 0; i < 2; i++) {
  for (int j = 0; j < 2; j++) {
    for (int k = 0; k < 2; k++) {
      cout << letters[i][j][k] << "\n";
    }
  }
}

为什么使用多维数组?

多维数组非常适合表示网格。此示例展示了它们的实际用途。在以下示例中,我们使用多维数组表示一个小型的战舰游戏:

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
// 我们放置 “1” 来表示那里有一艘船。
bool ships[4][4] = {
  { 0, 1, 1, 0 },
  { 0, 0, 0, 0 },
  { 0, 0, 1, 0 },
  { 0, 0, 1, 0 }
};

// 通过这些变

量跟踪玩家击中了多少船以及玩家已经玩了多少轮

代码语言:cpp
代码运行次数:0
运行
AI代码解释
复制
int hits = 0;
int numberOfTurns = 0;

// 允许玩家继续进行,直到他们击中了所有四艘船
while (hits < 4) {
  int row, column;

  cout << "选择坐标\n";

  // 要求玩家输入一行
  cout << "选择 0 到 3 之间的行号:";
  cin >> row;

  // 要求玩家输入一列
  cout << "选择 0 到 3 之间的列号:";
  cin >> column;

  // 检查这些坐标是否存在船只
  if (ships[row][column]) {
    // 如果玩家击中了一艘船,将其删除并将值设置为零。
    ships[row][column] = 0;

    // 增加击中计数器
    hits++;

    // 告诉玩家他们击中了一艘船以及剩下多少艘船
    cout << "命中!剩下 " << (4-hits) << " 艘船。\n\n";
  } else {
    // 告诉玩家他们没击中
    cout << "未命中\n\n";
  }

  // 计算玩家进行了多少轮
  numberOfTurns++;
}

cout << "胜利!\n";
cout << "你在 " << numberOfTurns << " 轮内获胜";

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
IntelliJ IDEA 教程设置讲解
IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。
前端教程
2018/08/16
1.5K0
IntelliJ IDEA 教程设置讲解
IDEA入门级使用教程
IDEA的基础配置 下载好IDEA,免不了一些配置和个人设置。一些设置问题和操作我放在最后讲,因为不影响我们的 使用。先说一下jdk和tomcat的配置。 jdk的配置。 在首页点击c
似水的流年
2018/01/18
1.8K0
IDEA入门级使用教程
「硬核干货」总结IDEA开发的26个常用设置
程序员对待IDE都是虔诚的,经常因为谁是最好的IDE而在江湖上掀起波澜,曾经我也是。
鹿老师的Java笔记
2020/03/30
1.1K0
IDEA入门级教程(文末常用快捷键)
IDEA相对于eclipse来说最大的优点就是它比eclipse聪明。聪明到什么程度呢?我们先来看几个简单的例子。
用户1093975
2018/08/03
8160
IDEA入门级教程(文末常用快捷键)
idea是什么软件_总结IDEA开发的26个常用设置
Transparent native-to-ascii conversion 主要用于转换 ascii,一般都要勾选, 不然 Properties 文件中的注释显示的都不会是中文。
全栈程序员站长
2022/09/27
1.5K0
idea是什么软件_总结IDEA开发的26个常用设置
不知道IDEA的这些个性化配置,你怎么能说自己会用它
这里默认提供了三套主题:IntelliJ,Darcula,Windows。这里可以根据自己的喜 好进行选择。
不温卜火
2020/10/28
1.5K0
不知道IDEA的这些个性化配置,你怎么能说自己会用它
古语云:工欲善其事必先利其器 --> 最新、最全的 IntelliJ IDEA(2018.3.3) 的介绍、安装、破解、配置与使用
IDEA(https://www.jetbrains.com/idea/)是 JetBrains 公司的产品,公司旗下还有其 它产品,比如:
黑泽君
2019/01/28
6.7K0
古语云:工欲善其事必先利其器 --> 最新、最全的 IntelliJ IDEA(2018.3.3)  的介绍、安装、破解、配置与使用
IDEA新手使用教程(详解)
IDEA 分为两个版本:旗舰版(Ultimate)和社区版(Community)。 旗舰版收费(限 30 天免费试用),社区版免费
泰斗贤若如
2019/06/19
52.6K2
IDEA新手使用教程(详解)
再探IntelliJ IDEA(超详细IntelliJIDEA的安装、配置与使用)
再前段时间写了一篇初探IntelliJ IDEA文章、不是很详细,使用一段时间后,打算重新整理一波详细使用教程,IDEA对于Eclipse确实方便了许多,节省了开发效率.下面就继续再探IDEA,文章比较长、耐心看完肯定能掌握基本操作80%,加油~~
Lcry
2022/11/29
4.3K0
idea使用详细教程_新手入门
IDEA下载地址:https://www.jetbrains.com/idea/download/#section=windows IDEA 分为两个版本:旗舰版(Ultimate)和社区版(Community)。
全栈程序员站长
2022/09/25
3.5K0
idea使用详细教程_新手入门
IntelliJ IDEA相关配置
File–>Project Structure…–>Platform Settings -->SDKs
鱼找水需要时间
2023/04/12
5010
IntelliJ IDEA相关配置
2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示(图文版)<中文版>
作为一名开发人员,第一肯定是选择一款趁手的开发利器,本人使用 Java 偏多,这里推荐使用 IntelliJ IDEA, 俗称神级开发工具,具体的安装过程就不过多赘述了,有需要了解的朋友可以参考博文:
猫头虎
2024/04/07
3.6K0
2023 最新 IntelliJ IDEA 2023.3 详细配置步骤演示(图文版)<中文版>
2022 最新 IntelliJ IDEA 2022 详细配置步骤演示(图文版)
作为一名开发人员,第一肯定是选择一款趁手的开发利器,本人使用 Java 偏多,这里推荐使用 IntelliJ IDEA, 俗称神级开发工具,具体的安装过程就不过多赘述了,有需要了解的朋友可以参考博文:
猫头虎
2024/04/07
4980
2022 最新 IntelliJ IDEA 2022 详细配置步骤演示(图文版)
4. IDEA的安装与使用(上)
此外,2022年,某美国软件开发商在对近千名专业的Java开发者调研后,发布了《2022年Java开发者生产力报告》。报告提到:JetBrains 的 IntelliJ IDEA是最受欢迎的 Java IDE,占 48%,其次是 Eclipse,占 24%,Visual Studio Code 占 18%。
捞月亮的小北
2023/12/01
5230
4. IDEA的安装与使用(上)
Java学习笔记(1)——搭建好所需要的环境配置IDEA
前言:后来仔细思考了一下,从零开始学习Java的系列标题略长(实际改过来的也不短),并且不能正确反映写文的目的,所以决定从这一篇开始改为Java学习笔记。之前的一篇文章在一觉醒来以后也觉得有些不太好还有一些需要添加的地方,所以后来这一个系列是时刻更新的东西,用笔记来命名再好不过了。 搭建好我们需要的环境 在搭建环境之前,我们需要先来了解以下下面的这些名词: 术语名 缩写 解释 Java Development Kit JDK 编写Java程序的从程序员使用的软件 Java Runti
我没有三颗心脏
2018/04/26
9650
Java学习笔记(1)——搭建好所需要的环境配置IDEA
精选提高开发效率的15个idea插件
最近大部分开发IDE工具都切换到了,所以也花了点心思去找了相关的插件。这里整理的适合各种语言开发的通用插件,也排除掉IntelliJ IDEA自带的常用插件了(有些插件在安装IntelliJ IDEA的时候可以安装)
java进阶架构师
2018/09/21
11.5K0
精选提高开发效率的15个idea插件
这样配置:让你的 IDEA 好用到飞起来
来源:blog.csdn.net/fly910905/article/details/77868300
Java团长
2019/08/20
1.3K0
这样配置:让你的 IDEA 好用到飞起来
IntelliJ IDEA使用教程(2018图文版)
如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了。其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步体会到这款智能IDE带来的巨大开发便利,在强大的插件功能支持下,诸如对Git和Maven的支持简直让人停不下来,各种代码提示,包括JS更是手到擒来,最终不得不被这款神奇的IDE所折服。为了让身边更多的小伙伴参与进来,决定写下这篇文章,与君共享。(*^_^*)
Java团长
2018/11/23
1.4K0
Intellij IDEA就这样配置,快到飞起!
blog.csdn.net/fly910905/article/details/77868300
用户2242639
2021/07/23
2.2K0
Intellij IDEA就这样配置,快到飞起!
推荐 IDEA 最牛配置,好用到飞起来!
1、设置maven 1、在File->settings->搜索maven 2、Mavan home directory–设置maven安装包的bin文件夹所在的位置 3、User settings file–设置setting文件所在的位置 4、Local repository–设置本地仓库的
芈亓
2022/06/13
8590
推荐阅读
相关推荐
IntelliJ IDEA 教程设置讲解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档