0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何创建和使用多维数组

454398 来源:网络整理 作者:网络整理 2019-11-26 17:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:我们需要什么要拥有

要最终以可见的方式显示二维数组(我们稍后将讨论3维数组选项),我们将创建一个记录设备使用与我的一维数组Instructable相同的材料。这些材料是:

3个面包板按钮(记录按钮,记录其按下情况的按钮和播放按钮)

3个LED(指示每个按钮何时已按下)

6个小电阻(我将使用220欧姆)

Digilent的chipKIT Uno32(运行代码的微控制器

跳线(

面包板(未显示)

步骤2:关于多维数组的注意事项

一个二维数组,或与此相关的任何二维数组,本质上是多个单维数组。多维数组的好处是它可以在一个代码段中直观地将相关数组分组在一起。这样,程序员不必从多个来源调用信息,而是可以指定一个来源并从那里找到他们的信息。

声明一个维数组时,实际上就是在创建一行值。对于每个更高的维度,您都可以在值行中添加(不信不信)另一个维度。二维数组将使您的线成为值的平面,而三维数组将使值的平面成为值的立方体。

再往前走,您就会开始涉入有趣的观点。可以将一个四维数组视为具有三个多维数据集的一行。六个维度的数组可以认为是一个立方体。等等。

不过,作为免责声明,您在编程中几乎不需要3维数组以外的任何东西。当然,更高维度的数组可以用作[国家/地区] [州] [县] [镇] [家庭] [人]或某些销售目的的目录/数据库,但是(在我看来)这将更易于在多个环境中导航,较小尺寸的数组,并且其中一些数组需要大量的内存。

步骤3:声明和初始化二维数组

但是让我们进入实际创建这些数组的更实际的部分。添加到数组中的每个维度都会在第一组[元素]的前面添加一个额外的[元素],该元素指定每个单个维度数组的长度。

因此,对于二维数组,您可以将声明您需要一定数量的具有一定长度的单维数组。例如,如果我想声明一个包含3个一维数组(每个数组包含4个元素)的2D数组,我将输入:

int myFirst2DArray [3] [4];

这很好创建我们想要的数组,但在所有12个点中都用零填充。要使用某些值初始化它,而不必以后再单独分配它们,我们可以改为输入:

int myFirst2DArray [3] [4] =

{

{1,2,3,4 },

{5,6,7,8},

{9,10,11,12}

};

您可以安排它,使其仅在一行上相反,但这可以使我从视觉上确保我拥有所有想要的值。

与单维数组一样,我们可以通过说明各个方向上的哪个元素来访问单个值我们要访问。例如,要获取第二个数组的一维数组的第三个值,我们输入:

int x = myFirst2DArray [1] [2];

步骤4:声明和初始化高维数组

同样,当您向单个维数组添加更多维时,在声明的前面会添加更多[elements]阵列。因此,对于一个具有三层,四行,每行中具有两个元素的三维单维数组的三维数组,我们可以通过键入以下内容对其进行初始化:

int myFirst3DArray [3] [4] [2] =

{

{{10,11},{12,13},{14,15},{16,17}},

{{18,19},{20, 21},{22、23},{24、25}},

{{26,27},{28、29},{30、31},{32、33}}

};

步骤5:关于多维数组的更多信息

请注意,我们可以将数组扩展到更多通过以下方式帮助说明这三个维度:

{//整个数组

{//多维数据集的第一层

{10,11},//值的第一行/行图层

{12,13}等,等等//图层中的其他值行

},//多维数据集第一层的末端

{//多维数据集的第二层

{18,19}等,等等//值行

}//第二层的末尾

等,等等//第三层和值

}//整个末尾数组

。..但是那将使步骤l不必要的大而繁琐(显然Instructables忽略了代码和注释之间的某些空格),因此在一行的特定层中初始化所有值的更为精简的版本代替了。通过这种嵌套的{}样式,您可以创建多维数组。

请注意,在初始化数组时,您不会为高阶维提供值,而只是为单维数组提供值。否则,您将尝试以某种方式为编译器不知道要处理的数组赋予额外的值。

步骤6:实践中的二维数组

让我们建立电路,以便我们可以测试二维阵列。如果您碰巧已经从我的Instructionable一维数组中设置了此电路,请随时跳过该电路结构。

将面包板上的负电源导轨连接到标有“芯片组Uno32上的“ GND”。然后,从Uno32上的3.3V电源引脚到面包板上的正极电源线连接一根跳线。

现在,将三个按钮中的每个按钮放置在面包板上,使每个按钮跨过面包板中间的山谷。使用电阻器之一将每个按钮的一只脚连接到负电源轨。将支脚与接地的导线连接到山谷的同一侧,并连接至正极电源线。

步骤7:设置电路-LED和数字信号

对于电路的视觉部分(包括LED,无论是否相信),在每个按钮旁边放置一个LED。在每个LED的阴极侧与负电源轨之间连接一个220 Ohm的电阻

虽然看起来不错,但是如果我们无法从电路中发出或接收任何信号,那对我们没有好处。要解决此问题,请从每个LED的阳极侧到Uno32上自己的数字引脚的跳线,以及从每个按钮的接地脚到Uno32上他们自己的数字引脚的跳线。我将引脚5、7和9用于按钮,将引脚31、33和35用于LED。

步骤8:二维记录代码

根据记录的性质,我们和微控制器都无法确定在实际停止记录之前记录将持续多长时间。因此,我们将猜测要存储最长的记录,阵列必须有多大。由于Uno32具有32位处理器,因此我们不必担心整数的大小限制,除非您计划在录制期间一次按住(或不按住)按钮超过24天。

假设是这种情况,我们或至少我将记录阵列的大小设置为两组,每组50个元素,因为我不打算记录超过25次的按钮按下(其中一个用于按下按钮)并熄灭,一个按下按钮,然后点亮)。第二组50个元素跟踪按钮的打开或关闭状态,这样您就不仅可以记录按钮被按下(或不按下)的时间长度,还可以猜测按钮在开始时是否被按下。录音。您可以在下面的文本文件中下载用于Uno32的代码。如果尚未安装,则需要免费的MPIDE软件对Uno32进行编程。

可以免费签出二维记录视频;您可能会注意到,它看起来与单阵列演示视频的视频看起来非常相似,但这是因为二维数组本质上是一组单维数组,因此两组代码在功能上是相同的。

第9步:您提到了3维数组吗?

确实做到了。但这也与多维数组的固有局限性有关。此限制以内存形式出现。在创建代码的大部分时间里,我都会将变量放在“堆栈”(编程中的内存对象)上,假定它们是局部变量,或者创建全局变量,这些变量存储在称为“ .data”的另一种内存类型中。 p》

我不会尝试解释编程中内存的详细信息/机制(主要是因为我不太了解它,但是您可以在此处了解更多信息),而是从我的理解中了解在Uno32上创建巨型三维数组作为一种乘法表/多维数据集,我遇到了堆栈溢出问题,这意味着我试图在内存中放置超出空间的东西,因此编译器将多余的东西放在其他地方不应混淆的内存位置,导致在我尝试运行该程序时该程序崩溃。我似乎无法说服该程序,动态分配的内存也应该允许我有更多的内存空间。

基本上,我内存不足,无法找到一种制作3D阵列的方法工作。

我最终确实做了一个小的2D数组工作(60 x 60),但是我们只介绍了2D数组的一个例子,最后,您可以在代码中键入乘法问题并得到答案。无需先创建答案数组。这是学习新事物和实用主义之间的分界线。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24728

    浏览量

    692562
  • 电阻
    +关注

    关注

    88

    文章

    5816

    浏览量

    179957
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    新品发布 | 多维科技推出HFM2905高频磁强计-精准捕捉高频磁场

    2026年3月17日消息,江苏多维科技(Dowaytech)推出HFM2905单轴模拟高频磁强计。此次发布的USB磁强计新品,相较于专注低频(
    的头像 发表于 03-17 20:03 360次阅读
    新品发布 | <b class='flag-5'>多维</b>科技推出HFM2905高频磁强计-精准捕捉高频磁场

    请问如何构建和运行视频编解码器示例应用程序?

    如何构建和运行视频编解码器示例应用程序?
    发表于 03-10 06:27

    桥梁船舶防撞预警系统功能详解:多维感知精准预警

    船舶防撞预警系统的核心优势,在于构建了“雷达+视觉+AIS”的三位一体多维感知网。
    的头像 发表于 01-29 17:03 434次阅读

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结

    RT-Thread Vector软件包:嵌入式开发的动态数组容器 | 技术集结
    的头像 发表于 01-25 09:33 5648次阅读
    RT-Thread Vector软件包:嵌入式开发的动态<b class='flag-5'>数组</b>容器 | 技术集结

    电能质量在线监测装置支持多维度统计报表吗?

      是的,主流电能质量在线监测装置普遍支持多维度统计报表功能 ,这是其数据分析能力的核心组成部分,能帮助用户全面评估电网电能质量状况,满足合规性要求和运维决策需求。 一、多维度统计的核心维度类型
    的头像 发表于 12-11 16:51 707次阅读

    scanf函数介绍

    \",a); 正确 二维数据或多维数组的定义和引用 int a[4,5]; a[1+2,2+2]=5; 错误 int[10]; 正确 误以为数组名代表数组全部元素 int a[4
    发表于 12-02 06:07

    数组的初体验

    程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。可以将数组理解为大小固定,所放物品为同类的一个购物袋,在该购 物
    发表于 11-25 08:06

    二维数组介绍

    大家不要认为二维数组在内存中就是按行、列这样二维存储的,实际上,不管二维、三维数组… 都是编译器的语法糖。 存储上和一维数组没有本质区别,举个例子: int array[3][3
    发表于 11-25 07:42

    黑芝麻智能推出面向机器人产业的SesameX多维智能计算平台

    11月20日,“多维进化,智赋新生”2025年黑芝麻智能机器人平台产品发布会在上海成功举行,正式推出面向机器人产业的SesameX多维智能计算平台,这是业界首个机器人商业化专属部署平台。
    的头像 发表于 11-24 14:44 778次阅读
    黑芝麻智能推出面向机器人产业的SesameX<b class='flag-5'>多维</b>智能计算平台

    多种类几何尺寸集成智能仪器定制 一站式解决产线多维度测量需求

    “功能集成+智能升级+产线适配”的核心逻辑,将多维度测量需求整合到一台设备中,同时融入数据处理、联网交互、自动化适配能力,从根本上解决产线测量的“碎片化”问题。 定制化集成仪器的核心优势 产线传统痛点
    发表于 10-09 13:50

    AEM多维度安全保障赋能加氢站,制、加氢无忧!

    AEM(阴离子交换膜)电解水制氢设备在技术、材料、结构、设计与运行控制等多维度安全性能方面表现突出,其技术特性与加氢站的安全需求高度契合,能够确保站点制、加氢无忧!
    的头像 发表于 07-03 10:27 1140次阅读
    AEM<b class='flag-5'>多维</b>度安全保障赋能加氢站,制、加氢无忧!

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换
    的头像 发表于 06-19 10:53 1554次阅读
    迅为RK3576开发板NPU环境搭<b class='flag-5'>建和</b>使用rknn-toolkit2功能演示模型转换

    迅为RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装

    迅为RK3576开发板NPUrknn-toolkit2环境搭建和使用docker环境安装
    的头像 发表于 06-18 15:22 1476次阅读
    迅为RK3576开发板NPUrknn-toolkit2环境搭<b class='flag-5'>建和</b>使用docker环境安装

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用
    的头像 发表于 06-17 13:46 1989次阅读
    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭<b class='flag-5'>建和</b>使用

    多维科技模拟输出角度芯片的优势详解之「响应速度」

    图1:本文内容结构多维科技在苏州总部建起的TMR(TunnelingMagnetoResistance,隧道磁阻效应)芯片产线,是国内目前唯一的8英寸TMRWafer产线,具备领先的工艺和产能优势
    的头像 发表于 05-09 17:52 871次阅读
    <b class='flag-5'>多维</b>科技模拟输出角度芯片的优势详解之「响应速度」