0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何創(chuàng)建和使用多維數(shù)組

454398 ? 來(lái)源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-11-26 17:45 ? 次閱讀

步驟1:我們需要什么要擁有

要最終以可見(jiàn)的方式顯示二維數(shù)組(我們稍后將討論3維數(shù)組選項(xiàng)),我們將創(chuàng)建一個(gè)記錄設(shè)備使用與我的一維數(shù)組Instructable相同的材料。這些材料是:

3個(gè)面包板按鈕(記錄按鈕,記錄其按下情況的按鈕和播放按鈕)

3個(gè)LED(指示每個(gè)按鈕何時(shí)已按下)

6個(gè)小電阻(我將使用220歐姆)

Digilent的chipKIT Uno32(運(yùn)行代碼的微控制器

跳線(xiàn)(

面包板(未顯示)

步驟2:關(guān)于多維數(shù)組的注意事項(xiàng)

一個(gè)二維數(shù)組,或與此相關(guān)的任何二維數(shù)組,本質(zhì)上是多個(gè)單維數(shù)組。多維數(shù)組的好處是它可以在一個(gè)代碼段中直觀(guān)地將相關(guān)數(shù)組分組在一起。這樣,程序員不必從多個(gè)來(lái)源調(diào)用信息,而是可以指定一個(gè)來(lái)源并從那里找到他們的信息。

聲明一個(gè)維數(shù)組時(shí),實(shí)際上就是在創(chuàng)建一行值。對(duì)于每個(gè)更高的維度,您都可以在值行中添加(不信不信)另一個(gè)維度。二維數(shù)組將使您的線(xiàn)成為值的平面,而三維數(shù)組將使值的平面成為值的立方體。

再往前走,您就會(huì)開(kāi)始涉入有趣的觀(guān)點(diǎn)??梢詫⒁粋€(gè)四維數(shù)組視為具有三個(gè)多維數(shù)據(jù)集的一行。六個(gè)維度的數(shù)組可以認(rèn)為是一個(gè)立方體。等等。

不過(guò),作為免責(zé)聲明,您在編程中幾乎不需要3維數(shù)組以外的任何東西。當(dāng)然,更高維度的數(shù)組可以用作[國(guó)家/地區(qū)] [州] [縣] [鎮(zhèn)] [家庭] [人]或某些銷(xiāo)售目的的目錄/數(shù)據(jù)庫(kù),但是(在我看來(lái))這將更易于在多個(gè)環(huán)境中導(dǎo)航,較小尺寸的數(shù)組,并且其中一些數(shù)組需要大量的內(nèi)存。

步驟3:聲明和初始化二維數(shù)組

但是讓我們進(jìn)入實(shí)際創(chuàng)建這些數(shù)組的更實(shí)際的部分。添加到數(shù)組中的每個(gè)維度都會(huì)在第一組[元素]的前面添加一個(gè)額外的[元素],該元素指定每個(gè)單個(gè)維度數(shù)組的長(zhǎng)度。

因此,對(duì)于二維數(shù)組,您可以將聲明您需要一定數(shù)量的具有一定長(zhǎng)度的單維數(shù)組。例如,如果我想聲明一個(gè)包含3個(gè)一維數(shù)組(每個(gè)數(shù)組包含4個(gè)元素)的2D數(shù)組,我將輸入:

int myFirst2DArray [3] [4];

這很好創(chuàng)建我們想要的數(shù)組,但在所有12個(gè)點(diǎn)中都用零填充。要使用某些值初始化它,而不必以后再單獨(dú)分配它們,我們可以改為輸入:

int myFirst2DArray [3] [4] =

{

{1,2,3,4 },

{5,6,7,8},

{9,10,11,12}

};

您可以安排它,使其僅在一行上相反,但這可以使我從視覺(jué)上確保我擁有所有想要的值。

與單維數(shù)組一樣,我們可以通過(guò)說(shuō)明各個(gè)方向上的哪個(gè)元素來(lái)訪(fǎng)問(wèn)單個(gè)值我們要訪(fǎng)問(wèn)。例如,要獲取第二個(gè)數(shù)組的一維數(shù)組的第三個(gè)值,我們輸入:

int x = myFirst2DArray [1] [2];

步驟4:聲明和初始化高維數(shù)組

同樣,當(dāng)您向單個(gè)維數(shù)組添加更多維時(shí),在聲明的前面會(huì)添加更多[elements]陣列。因此,對(duì)于一個(gè)具有三層,四行,每行中具有兩個(gè)元素的三維單維數(shù)組的三維數(shù)組,我們可以通過(guò)鍵入以下內(nèi)容對(duì)其進(jìn)行初始化:

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:關(guān)于多維數(shù)組的更多信息

請(qǐng)注意,我們可以將數(shù)組擴(kuò)展到更多通過(guò)以下方式幫助說(shuō)明這三個(gè)維度:

{//整個(gè)數(shù)組

{//多維數(shù)據(jù)集的第一層

{10,11},//值的第一行/行圖層

{12,13}等,等等//圖層中的其他值行

},//多維數(shù)據(jù)集第一層的末端

{//多維數(shù)據(jù)集的第二層

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

}//第二層的末尾

等,等等//第三層和值

}//整個(gè)末尾數(shù)組

。..但是那將使步驟l不必要的大而繁瑣(顯然Instructables忽略了代碼和注釋之間的某些空格),因此在一行的特定層中初始化所有值的更為精簡(jiǎn)的版本代替了。通過(guò)這種嵌套的{}樣式,您可以創(chuàng)建多維數(shù)組。

請(qǐng)注意,在初始化數(shù)組時(shí),您不會(huì)為高階維提供值,而只是為單維數(shù)組提供值。否則,您將嘗試以某種方式為編譯器不知道要處理的數(shù)組賦予額外的值。

步驟6:實(shí)踐中的二維數(shù)組

讓我們建立電路,以便我們可以測(cè)試二維陣列。如果您碰巧已經(jīng)從我的Instructionable一維數(shù)組中設(shè)置了此電路,請(qǐng)隨時(shí)跳過(guò)該電路結(jié)構(gòu)。

將面包板上的負(fù)電源導(dǎo)軌連接到標(biāo)有“芯片組Uno32上的“ GND”。然后,從Uno32上的3.3V電源引腳到面包板上的正極電源線(xiàn)連接一根跳線(xiàn)。

現(xiàn)在,將三個(gè)按鈕中的每個(gè)按鈕放置在面包板上,使每個(gè)按鈕跨過(guò)面包板中間的山谷。使用電阻器之一將每個(gè)按鈕的一只腳連接到負(fù)電源軌。將支腳與接地的導(dǎo)線(xiàn)連接到山谷的同一側(cè),并連接至正極電源線(xiàn)。

步驟7:設(shè)置電路-LED和數(shù)字信號(hào)

對(duì)于電路的視覺(jué)部分(包括LED,無(wú)論是否相信),在每個(gè)按鈕旁邊放置一個(gè)LED。在每個(gè)LED的陰極側(cè)與負(fù)電源軌之間連接一個(gè)220 Ohm的電阻。

雖然看起來(lái)不錯(cuò),但是如果我們無(wú)法從電路中發(fā)出或接收任何信號(hào),那對(duì)我們沒(méi)有好處。要解決此問(wèn)題,請(qǐng)從每個(gè)LED的陽(yáng)極側(cè)到Uno32上自己的數(shù)字引腳的跳線(xiàn),以及從每個(gè)按鈕的接地腳到Uno32上他們自己的數(shù)字引腳的跳線(xiàn)。我將引腳5、7和9用于按鈕,將引腳31、33和35用于LED。

步驟8:二維記錄代碼

根據(jù)記錄的性質(zhì),我們和微控制器都無(wú)法確定在實(shí)際停止記錄之前記錄將持續(xù)多長(zhǎng)時(shí)間。因此,我們將猜測(cè)要存儲(chǔ)最長(zhǎng)的記錄,陣列必須有多大。由于Uno32具有32位處理器,因此我們不必?fù)?dān)心整數(shù)的大小限制,除非您計(jì)劃在錄制期間一次按?。ɑ虿话醋。┌粹o超過(guò)24天。

假設(shè)是這種情況,我們或至少我將記錄陣列的大小設(shè)置為兩組,每組50個(gè)元素,因?yàn)槲也淮蛩阌涗洺^(guò)25次的按鈕按下(其中一個(gè)用于按下按鈕)并熄滅,一個(gè)按下按鈕,然后點(diǎn)亮)。第二組50個(gè)元素跟蹤按鈕的打開(kāi)或關(guān)閉狀態(tài),這樣您就不僅可以記錄按鈕被按下(或不按下)的時(shí)間長(zhǎng)度,還可以猜測(cè)按鈕在開(kāi)始時(shí)是否被按下。錄音。您可以在下面的文本文件中下載用于Uno32的代碼。如果尚未安裝,則需要免費(fèi)的MPIDE軟件對(duì)Uno32進(jìn)行編程。

可以免費(fèi)簽出二維記錄視頻;您可能會(huì)注意到,它看起來(lái)與單陣列演示視頻的視頻看起來(lái)非常相似,但這是因?yàn)槎S數(shù)組本質(zhì)上是一組單維數(shù)組,因此兩組代碼在功能上是相同的。

第9步:您提到了3維數(shù)組嗎?

確實(shí)做到了。但這也與多維數(shù)組的固有局限性有關(guān)。此限制以?xún)?nèi)存形式出現(xiàn)。在創(chuàng)建代碼的大部分時(shí)間里,我都會(huì)將變量放在“堆?!保ň幊讨械膬?nèi)存對(duì)象)上,假定它們是局部變量,或者創(chuàng)建全局變量,這些變量存儲(chǔ)在稱(chēng)為“ .data”的另一種內(nèi)存類(lèi)型中。 p》

我不會(huì)嘗試解釋編程中內(nèi)存的詳細(xì)信息/機(jī)制(主要是因?yàn)槲也惶私馑?,但是您可以在此處了解更多信息),而是從我的理解中了解在Uno32上創(chuàng)建巨型三維數(shù)組作為一種乘法表/多維數(shù)據(jù)集,我遇到了堆棧溢出問(wèn)題,這意味著我試圖在內(nèi)存中放置超出空間的東西,因此編譯器將多余的東西放在其他地方不應(yīng)混淆的內(nèi)存位置,導(dǎo)致在我嘗試運(yùn)行該程序時(shí)該程序崩潰。我似乎無(wú)法說(shuō)服該程序,動(dòng)態(tài)分配的內(nèi)存也應(yīng)該允許我有更多的內(nèi)存空間。

基本上,我內(nèi)存不足,無(wú)法找到一種制作3D陣列的方法工作。

我最終確實(shí)做了一個(gè)小的2D數(shù)組工作(60 x 60),但是我們只介紹了2D數(shù)組的一個(gè)例子,最后,您可以在代碼中鍵入乘法問(wèn)題并得到答案。無(wú)需先創(chuàng)建答案數(shù)組。這是學(xué)習(xí)新事物和實(shí)用主義之間的分界線(xiàn)。

責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • led
    led
    +關(guān)注

    關(guān)注

    240

    文章

    23085

    瀏覽量

    657249
  • 電阻
    +關(guān)注

    關(guān)注

    86

    文章

    5453

    瀏覽量

    171502
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview字符串數(shù)組轉(zhuǎn)化為數(shù)值數(shù)組

    在LabVIEW中,將字符串數(shù)組轉(zhuǎn)換為數(shù)值數(shù)組是一項(xiàng)常見(jiàn)的任務(wù),尤其是在處理數(shù)據(jù)采集、信號(hào)處理或用戶(hù)輸入時(shí)。 1. 理解LabVIEW的數(shù)據(jù)類(lèi)型 在開(kāi)始之前,了解LabVIEW中的數(shù)據(jù)類(lèi)型是非
    的頭像 發(fā)表于 09-04 17:47 ?1563次閱讀

    HarmonyOS開(kāi)發(fā)案例:【Stage模型下Ability的創(chuàng)建和使用】

    基于Stage模型,對(duì)Ability的創(chuàng)建和使用進(jìn)行講解。首先在課程中我們將帶領(lǐng)大家使用DevEco Studio創(chuàng)建一個(gè)Stage模型Ability,并使用UIAbilityContext啟動(dòng)
    的頭像 發(fā)表于 05-08 14:41 ?661次閱讀
    HarmonyOS開(kāi)發(fā)案例:【Stage模型下Ability的<b class='flag-5'>創(chuàng)建和</b>使用】

    深入探索KUKA KRL中的數(shù)組應(yīng)用

    如果 CHAR 類(lèi)型數(shù)組的所有數(shù)組元素都擁有相同的字符串,則不必單獨(dú)初始化每個(gè)數(shù)組元素。忽略右側(cè)的數(shù)組下標(biāo)。(對(duì)于一維數(shù)組下標(biāo),不寫(xiě)下標(biāo)。)
    的頭像 發(fā)表于 04-18 10:37 ?1087次閱讀
    深入探索KUKA KRL中的<b class='flag-5'>數(shù)組</b>應(yīng)用

    數(shù)組和鏈表在內(nèi)存中的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)

    數(shù)組和鏈表在內(nèi)存中的區(qū)別 數(shù)組和鏈表的優(yōu)缺點(diǎn)? 數(shù)組和鏈表是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于組織和存儲(chǔ)數(shù)據(jù)。它們?cè)趦?nèi)存中的存儲(chǔ)方式以及優(yōu)缺點(diǎn)方面存在一些顯著的差異。本文將詳細(xì)探討這些差異以及它們的優(yōu)缺點(diǎn)。 1.
    的頭像 發(fā)表于 02-21 11:30 ?867次閱讀

    鴻蒙二進(jìn)制數(shù)組創(chuàng)建

    背景 c++層數(shù)據(jù)都是二進(jìn)制,需要轉(zhuǎn)換成arrayBuffer透?jìng)鞯絜ts層給業(yè)務(wù)使用,但是鴻蒙的使用下面兩個(gè)api創(chuàng)建出來(lái)的二進(jìn)制數(shù)組數(shù)據(jù)都是錯(cuò)誤的。 接口
    的頭像 發(fā)表于 01-31 15:24 ?1201次閱讀

    PHP中數(shù)組的使用方法!

    如何創(chuàng)建數(shù)組、添加/刪除元素、訪(fǎng)問(wèn)數(shù)組元素、遍歷數(shù)組以及使用數(shù)組方法和函數(shù)等等。 首先,我們來(lái)看一下如何
    的頭像 發(fā)表于 01-12 15:11 ?492次閱讀

    labview怎么查數(shù)組中相同元素的個(gè)數(shù)

    要查找LabVIEW中數(shù)組中相同元素的個(gè)數(shù),可以使用以下步驟: 創(chuàng)建一個(gè)包含要查找的數(shù)值的數(shù)組。這可以通過(guò)手動(dòng)輸入數(shù)組元素或從文件/其他數(shù)據(jù)源導(dǎo)入數(shù)
    的頭像 發(fā)表于 12-28 16:42 ?3118次閱讀

    數(shù)組和指針不相同嗎?數(shù)組和指針有哪些區(qū)別

    數(shù)組就是指針,指針就是數(shù)組,這樣的言論在評(píng)論區(qū)看到不下于10次。
    的頭像 發(fā)表于 12-13 16:34 ?1267次閱讀
    <b class='flag-5'>數(shù)組</b>和指針不相同嗎?<b class='flag-5'>數(shù)組</b>和指針有哪些區(qū)別

    數(shù)組與指針不能混用的情況

    數(shù)組與指針不能混用的情況? 數(shù)組與指針是 C/C++ 中非常常見(jiàn)的特性和概念。然而,在某些情況下,數(shù)組與指針是不能混用的。這種情況通常涉及到數(shù)組的內(nèi)存分配和
    的頭像 發(fā)表于 12-07 13:46 ?560次閱讀

    線(xiàn)程池的創(chuàng)建方式有幾種

    線(xiàn)程池是一種用于管理和調(diào)度線(xiàn)程的技術(shù),能夠有效地提高系統(tǒng)的性能和資源利用率。它通過(guò)預(yù)先創(chuàng)建一組線(xiàn)程并維護(hù)一個(gè)工作隊(duì)列,將任務(wù)提交給線(xiàn)程池來(lái)處理,從而減少線(xiàn)程的創(chuàng)建和銷(xiāo)毀次數(shù),避免了線(xiàn)程頻繁創(chuàng)建和銷(xiāo)毀
    的頭像 發(fā)表于 12-04 16:52 ?806次閱讀

    c語(yǔ)言中多維數(shù)組可以嵌套定義

    C語(yǔ)言中多維數(shù)組可以嵌套定義,這使得我們可以在一個(gè)數(shù)組中存儲(chǔ)另一個(gè)數(shù)組。通過(guò)這種方式,我們可以創(chuàng)建更加復(fù)雜和靈活的數(shù)據(jù)結(jié)構(gòu),以便更好地表示和
    的頭像 發(fā)表于 11-24 10:18 ?1051次閱讀

    c語(yǔ)言中數(shù)組怎么定義

    C語(yǔ)言中,數(shù)組是一種用來(lái)存儲(chǔ)相同類(lèi)型元素的數(shù)據(jù)結(jié)構(gòu)。它可以存儲(chǔ)多個(gè)元素,并通過(guò)一個(gè)共同的名稱(chēng)來(lái)引用這些元素。數(shù)組是一種很重要的數(shù)據(jù)結(jié)構(gòu),可以用于解決很多實(shí)際的問(wèn)題。 在C語(yǔ)言中,定義數(shù)組的語(yǔ)法如下
    的頭像 發(fā)表于 11-24 10:11 ?2817次閱讀

    C語(yǔ)言如何創(chuàng)建數(shù)組

    C語(yǔ)言是一種非常強(qiáng)大和靈活的編程語(yǔ)言,它提供了若干數(shù)據(jù)類(lèi)型來(lái)存儲(chǔ)和操作數(shù)據(jù)。其中之一就是數(shù)組,它可以用來(lái)存儲(chǔ)一系列具有相同數(shù)據(jù)類(lèi)型的元素。本文將詳細(xì)介紹如何在C語(yǔ)言中創(chuàng)建數(shù)組,并探討數(shù)組
    的頭像 發(fā)表于 11-24 10:08 ?1677次閱讀

    python如何定義二維空數(shù)組

    在Python中,可以通過(guò)使用列表嵌套的方式來(lái)定義二維空數(shù)組。具體步驟如下: Step 1: 創(chuàng)建一個(gè)空的二維列表 要創(chuàng)建一個(gè)空的二維數(shù)組,首先需要定義
    的頭像 發(fā)表于 11-21 15:12 ?1659次閱讀

    python怎么創(chuàng)建二維數(shù)組

    如何創(chuàng)建二維數(shù)組在Python中是一個(gè)常見(jiàn)的問(wèn)題。在Python中,我們可以使用嵌套的列表(list of lists)或者使用NumPy庫(kù)來(lái)創(chuàng)建二維數(shù)組。在本文中,我們將詳細(xì)介紹這兩
    的頭像 發(fā)表于 11-21 15:10 ?3587次閱讀