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

这篇具有很好参考价值的文章主要介绍了C++ 获取数组大小、多维数组操作详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

获取数组的大小

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

示例

int myNumbers[5] = {10, 20, 30, 40, 50};
cout << sizeof(myNumbers);

结果:

20

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

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

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

示例

int myNumbers[5] = {10, 20, 30, 40, 50};
int getArrayLength = sizeof(myNumbers) / sizeof(int);
cout << getArrayLength;

结果:

5

使用 sizeof() 循环遍历数组

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

与其写:

int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i = 0; i < 5; i++) {
  cout << myNumbers[i] << "\n";
}

最好写成:

示例

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”循环:

示例

int myNumbers[5] = {10, 20, 30, 40, 50};
for (int i : myNumbers) {
  cout << i << "\n";
}

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

多维数组

多维数组是数组的数组。

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

string letters[2][4];

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

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

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

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

string letters[2][2][2] = {
  {
    { "A", "B" },
    { "C", "D" }
  },
  {
    { "E", "F" },
    { "G", "H" }
  }
};

访问多维数组的元素

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

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

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};

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

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

更改多维数组中的元素

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

string letters[2][4] = {
  { "A", "B", "C", "D" },
  { "E", "F", "G", "H" }
};
letters[0][0] = "Z";

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

循环遍历多维数组

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

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

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";
  }
}

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

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";
    }
  }
}

为什么使用多维数组?

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

// 我们放置 “1” 来表示那里有一艘船。
bool ships[4][4] = {
  { 0, 1, 1, 0 },
  { 0, 0, 0, 0 },
  { 0, 0, 1, 0 },
  { 0, 0, 1, 0 }
};

// 通过这些变

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

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,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注文章来源地址https://www.toymoban.com/news/detail-846971.html

到了这里,关于C++ 获取数组大小、多维数组操作详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java break、continue 详解与数组深入解析:单维数组和多维数组详细教程

    Java Break: break 语句用于跳出循环或 switch 语句。 在循环中使用 break 语句可以立即终止循环,并继续执行循环后面的代码。 在 switch 语句中使用 break 语句可以跳出当前 case,并继续执行下一个 case。 示例: Java Continue: continue 语句用于跳过当前循环的剩余部分,并继续执行循环的

    2024年02月19日
    浏览(43)
  • C 多维数组、特殊字符和字符串函数详解

    数组,也称为单维数组。这些非常棒,是您在 C 语言编程中会经常使用的东西。然而,如果您想要将数据存储为表格形式,例如带有行和列的表格,则需要熟悉多维数组。 二维数组也称为矩阵,具有行和列的结构。 第一个维度表示行数 [2],而第二个维度表示列数 [3]。 要访

    2024年02月03日
    浏览(71)
  • C++ Break、Continue 和 数组操作详解

    break 语句还可以用来跳出循环。 在以下示例中,当 i 等于 4 时跳出循环: 以下示例跳过了值为 4 的情况: 你也可以在 while 循环中使用 break 和 continue : Break 示例 Continue 示例 数组用于在单个变量中存储多个值,而不是为每个值声明单独的变量。 要声明数组,请定义变量类型

    2024年04月08日
    浏览(52)
  • 【重拾C语言】六、批量数据组织(一)数组(数组类型、声明与操作、多维数组;典例:杨辉三角、矩阵乘积、消去法)

    目录 前言 六、批量数据组织——数组 6.1 成绩统计——数组类型 6.1.1 数组类型 6.1.2 数组声明与操作 6.1.3 成绩统计 6.2 统计多科成绩——多维数组 6.3 程序设计实例 6.3.1 杨辉三角形 6.3.2 矩阵乘积 6.3.3 消去法 6.4 线性表——分类与检索 ChatGPT         C语言是一种通用的、过

    2024年02月07日
    浏览(57)
  • Python 获取数组中等于给定值大小的值

    可能很多小伙伴看到这个标题会觉得很绕口,甚至可能会觉得这属于脱裤子放屁,多此一举,但是这里请大家耐心往下看,这篇文章将介绍一个在实际应用中比较常见的数据处理的示例。 比如,这里我们有一个 numpy 数组。 我们想要获取到它中间等于 5 的值。那么该怎么操作

    2024年01月18日
    浏览(35)
  • OpenCV [C++]-图像大小计算以及获取图像的尺寸和通道数

    后续继续记录opencv新学习的知识。

    2024年02月15日
    浏览(45)
  • 【Verilog语法013】verilog多维数组(多维矩阵)的写法

    有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[],a的右边可以扩展维数,多对方括号[],变化速度:BCDA packed维度: packed数组是一种将1个向量

    2024年02月08日
    浏览(40)
  • 在嵌入式Linux中使用C++读取 /proc/meminfo 文件来获取系统内存大小

    在嵌入式Linux中,可以使用C++编程语言通过读取  /proc/meminfo  文件来获取系统内存大小。以下是一个示例代码片段: 上述代码打开  /proc/meminfo  文件并逐行读取其中的内容。当找到以 \\\"MemTotal:\\\" 开头的行时,提取出内存大小信息并去除空格和单位(KB),然后将其转换为无符

    2024年02月10日
    浏览(46)
  • 【C语言】数组的声明和使用(一维数组、多维数组、字符数组)

    C语言支持数组数据结构,是用来存储固定大小的相同类型元素的顺序集合,往往被认为是一系列相同类型的变量。 特点: 有序数据的集合。 数组内所有元素类型相同。 所有的数组都是由连续的内存位置组成,最低的地址对应第一个元素,最高的地址对应最后一个元素。 数

    2024年02月16日
    浏览(35)
  • js中的多维数组转成一维数组

       

    2024年02月11日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包