C++ 中的多维数组如何发挥作用? [复制]

2023-12-06

可能的重复:
如何在 C++ 中使用数组?

简而言之,C++ 中的多维数组是数组的数组,还是只是一个表现得像多维的数组?

我的一位朋友解释说,C++中的数组只是常量指针,多维数组也是常量指针,其元素由多个索引寻址(即它们是指向一个大数组的指针,并且计算元素的偏移量)使用多个索引)。

我相信多维数组是指向其他数组的指针的单维数组,因为当将多维数组作为函数参数传递时,我经常使用以下语法:

void copy_matrix(int ** matrix);

如果没有,是否可以在 C++ 中创建一个数组的数组,并在编译时为每个子数组赋值 - 相当于以下语句的语义:

int line[2][2];

line[0] = {100, 100};
line[1] = {200, 200};

上述语句会产生编译时错误。我想出的一个快速(未经测试的)技巧是:

int line[2][2];

void assign(int index, int * point, int length) {
    for (int i = 0; i < length; i++) {
        line[index][i] = point[i];
    }
}

assign(0, {100, 100}, 2);
assign(1, {200, 200}, 2);

然而,我相信一定有一种更优雅的方式来达到同样的结果。我希望能够清楚地理解这些概念,并且欢迎任何意见。


大括号列表初始值设定项仅在初始化,并且它不能用于分配,正如您似乎尝试的那样。

相反,只需一次初始化多维数组:

int line[2][2] = { {100, 100}, {200, 200} };

回应你的第一句话:数组是数组,指针是指针,它们不是同一件事。然而,数组确实可以轻松衰减为指向第一个元素的指针,并且x[n]相当于*(x + n)。这也递归地适用于多维数组。

Arrays T[N]在内存中是连续的T and sizeof(T[N]) == N * sizeof(T);因此,数组的数组T[N][M]都是连续的T[N]并为T.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的多维数组如何发挥作用? [复制] 的相关文章

随机推荐

  • 增加 Java.sql.date/时间的最佳方法是什么?

    我有一个问题 我有一个 MySQL 数据库将日期和时间存储在单独的列中 但是 在 Java 代码中 我需要将数据库中日期和时间的结果时间戳增加分钟 小时或天 然后更新数据库中的相应列 我目前在 Java 中使用 Java sql date
  • 将旧内容(.html/.php 等)重新路由到 Ruby on Rails

    我已切换到 Ruby on Rails 当前的问题是重新路由 旧内容如XXX dummy html or XXX dummy php in RoR 到底什么是最好的解决方案 孤立的内容 XXX onlyinstance html 具有如下内
  • Visual Studio 代码。为什么窗口控制按钮位于左侧菜单栏上方?

    我正在开发视觉工作室应用程序 突然 我的窗口控制按钮跳到主菜单导航栏的左侧 隐藏按钮 文件 和 编辑 有谁知道如何将 Windows 控制按钮重新放回导航栏的右侧 在 vscode v1 71 2 中window experimental
  • 在 Kivy 画布上显示 PIL 图像

    我找不到任何有关如何在 Kivy Canvas 上显示 PIL 图像的文档 Rectangle source image give TypeError Image object has no attribute getitem 由于其他图像
  • 在Windows应用程序中调用Web服务

    我有一个 Windows 应用程序 我要求用户通过网站中提供给用户的用户名和密码登录应用程序 为此 我首先检查用户是否连接到互联网 如果存在连接 则继续检查凭据是否有效 因此 我需要在Windows应用程序中调用Web服务 我该如何进行 欢
  • 使用 firebase.com 作为数据库的应用程序中的分页

    前端应用程序将使用 firebase com 作为数据库 应用程序应该像博客一样工作 管理员添加 删除帖子 有 主页 页面 每页显示多篇文章 带有 下一页 和 上一页 按钮 以及显示单篇文章的页面 我还需要深层链接 IE 当用户输入 URL
  • Backbone.Collection.Create 未在视图中触发“添加”

    希望这是一个简单的问题 我正在努力学习骨干 但我坚持做一件非常简单的事情 当我使用 create 方法更新集合时 视图上的渲染永远不会被调用 我认为这应该在不显式调用 render 的情况下发生 我没有加载任何动态的东西 在这个脚本触发之前
  • 在android中启动2个模拟器

    我想知道是否有任何简单的方法可以在 android 中启动 2 个模拟器 我已经查看了开发人员指南 但没有足够的信息来帮助我 请有人解释一下这是如何完成的 谢谢 据我所知 您不能两次启动同一个模拟器 但通过创建两个单独的模拟器 您可以同时启
  • 休息最佳实践:何时返回 404 not found

    如果我有以下休息电话 GET items id subitems 在这些情况下我们应该返回以下内容吗 If id 没有找到 我们应该返回吗404 Not Found If id 已找到但未找到子项 我们是否应该返回200 Ok和一个空数组
  • 更新约会时时区更改为 UTC

    我正在使用 EWS 1 2 发送预约 创建新约会时 时区在通知邮件上正确显示 但在更新同一约会时 时区会重置为 UTC 有人能帮我解决这个问题吗 以下是复制该问题的示例代码 ExchangeService service new Excha
  • 使用mysql、php和ajax(使用jquery)创建表

    对于我的新项目 我想要一种不需要在每个数据库请求上重新加载页面的现代方法 我希望脚本查询数据库并使用查询信息创建一个表 我尝试了在互联网上找到的不同脚本 下面这个最接近我的需求 索引 php
  • 重定向回来时 LightOpenID 被禁止

    我正在尝试使用 lightOpenID 它应该很简单 并且上传文件然后测试它是否有效 当我使用 example google php 时 我第一次点击登录按钮 它要求我登录 Google 并允许 记住我正在构建的网站 然后它重定向回 exa
  • 在C语言中,数组是指针还是用作指针?

    我的理解是 数组只是指向值序列的常量指针 当您在 C 中声明数组时 您就是在声明一个指针并为其指向的序列分配空间 但这让我很困惑 以下代码 char y 20 char z y printf y size is lu n sizeof y
  • 需要将ascii值转换为hex值

    我需要将 ascii 值转换为十六进制值 请参阅 Ascii 表 但我在下面列出了一些示例 ASCII 1 31 2 32 3 33 4 34 5 35 A 41 a 61 等 但我使用 int 而不是字符串值 是否可以这样做 因此int测
  • Jekyll 多页分页

    我是 html css 新手 但正在尝试使用 Jekyll 创建一个博客 我在这里找到了这个主题https github com rosario kasper 主页index html 包含分页列表中的所有帖子 这很酷 不过 我想将我的帖子
  • Grails 条件查询检查“OR”逻辑

    我有圣杯criteriaQuery我正在检查的地方OR针对单个状态变量的逻辑如下 or eq status Status ONE eq status Status TWO eq status Status THREE 这段代码工作正常 我的
  • 从 firestore flutter 中的子集合中获取数据

    在第一个屏幕截图中 收集了许多文档users 每个文档都包含进一步的集合jobPost该集合包含更多文档及其元数据 我在这里想要的是转到集合的每个文档users和进一步的子集合jobPost并获取所有文档 假设首先应该转到集合中的文档 1u
  • 将 jQuery 日期选择器应用于多个实例

    我有一个 jQuery 日期选择器控件 可以在一次实例中正常工作 但我不确定如何让它在多个实例中工作 br 如果没有 For Each 循环 它可以正常工作 但如果 MyRecords 集合中有多个项目 则只有第一个文本框获得日期选择器 这
  • Lumen - mongodb - jenssegers/laravel-mongodb - 邮递员

    我已经在我的wamp上安装了mongodb C wamp64 bin mongodb mongodb 3 4 bin 我在路径中添加了 mongodb 并创建 Windows 服务以在必要时启动它 我已经通过 Composer 安装了 lu
  • C++ 中的多维数组如何发挥作用? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中使用数组 简而言之 C 中的多维数组是数组的数组 还是只是一个表现得像多维的数组 我的一位朋友解释说 C 中的数组只是常量指针 多维数组也是常量指针 其元素由多个索引寻址 即它们是指向一