精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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
    +關注

    關注

    241

    文章

    23136

    瀏覽量

    658471
  • 電阻
    +關注

    關注

    86

    文章

    5468

    瀏覽量

    171659
收藏 人收藏

    評論

    相關推薦

    指針數組和二維數組有沒有區別

    指針數組和二維數組有沒有區別?比如這樣的兩個代碼。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的頭像 發表于 11-24 11:12 ?67次閱讀

    C語言數組應用計算機導論A第6講:數組

    C語言數組應用計算機導論A第6講:數組
    發表于 11-20 15:33 ?0次下載

    labview字符串數組轉化為數值數組

    在LabVIEW中,將字符串數組轉換為數值數組是一項常見的任務,尤其是在處理數據采集、信號處理或用戶輸入時。 1. 理解LabVIEW的數據類型 在開始之前,了解LabVIEW中的數據類型是非
    的頭像 發表于 09-04 17:47 ?1807次閱讀

    在UART回調函數中創建一個EP0的INT端輸出數組,構建輸出數組的時候報錯,為什么?

    我想請問一下什么情況會出現這個錯誤呢? 我的代碼里是這樣的,在UART回調函數中創建一個EP0的INT端輸出數組,然后將UART里面的數據通過EP0的IN端推出。現在這個構建輸出數組的時候報錯 串口DEbug回
    發表于 05-23 07:06

    HarmonyOS開發案例:【Stage模型下Ability的創建和使用】

    基于Stage模型,對Ability的創建和使用進行講解。首先在課程中我們將帶領大家使用DevEco Studio創建一個Stage模型Ability,并使用UIAbilityContext啟動
    的頭像 發表于 05-08 14:41 ?690次閱讀
    HarmonyOS開發案例:【Stage模型下Ability的<b class='flag-5'>創建和</b>使用】

    AWTK 開源串口屏開發(17) - 通過 MODBUS 訪問數組數據

    在AWTK串口屏中,內置MODBUS客戶端通道模型,不用編寫代碼即可實現在ListView中顯示遠程設備上的數組數據。1.功能不用編寫代碼,實現對遠程設備上數組數據的顯示。2.創建項目從模板
    的頭像 發表于 04-29 08:25 ?325次閱讀
    AWTK 開源串口屏開發(17) - 通過 MODBUS 訪問<b class='flag-5'>數組</b>數據

    深入探索KUKA KRL中的數組應用

    如果 CHAR 類型數組的所有數組元素都擁有相同的字符串,則不必單獨初始化每個數組元素。忽略右側的數組下標。(對于一維數組下標,不寫下標。)
    的頭像 發表于 04-18 10:37 ?1131次閱讀
    深入探索KUKA KRL中的<b class='flag-5'>數組</b>應用

    數組和鏈表在內存中的區別 數組和鏈表的優缺點

    數組和鏈表在內存中的區別 數組和鏈表的優缺點? 數組和鏈表是常見的數據結構,用于組織和存儲數據。它們在內存中的存儲方式以及優缺點方面存在一些顯著的差異。本文將詳細探討這些差異以及它們的優缺點。 1.
    的頭像 發表于 02-21 11:30 ?921次閱讀

    鴻蒙二進制數組創建

    背景 c++層數據都是二進制,需要轉換成arrayBuffer透傳到ets層給業務使用,但是鴻蒙的使用下面兩個api創建出來的二進制數組數據都是錯誤的。 接口
    的頭像 發表于 01-31 15:24 ?1218次閱讀

    PHP中數組的使用方法!

    如何創建數組、添加/刪除元素、訪問數組元素、遍歷數組以及使用數組方法和函數等等。 首先,我們來看一下如何
    的頭像 發表于 01-12 15:11 ?504次閱讀

    鴻蒙Ability開發-Stage模型下Ability的創建和使用

    ,對Ability的創建和使用進行講解。首先在課程中我們將帶領大家使用DevEco Studio創建一個Stage模型Ability,并使用UIAbilityContext啟動另一個Ability,然后借助Want
    發表于 01-08 15:34

    labview怎么查數組中相同元素的個數

    要查找LabVIEW中數組中相同元素的個數,可以使用以下步驟: 創建一個包含要查找的數值的數組。這可以通過手動輸入數組元素或從文件/其他數據源導入
    的頭像 發表于 12-28 16:42 ?3233次閱讀

    數組和指針不相同嗎?數組和指針有哪些區別

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

    數組與指針不能混用的情況

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

    線程池的創建方式有幾種

    線程池是一種用于管理和調度線程的技術,能夠有效地提高系統的性能和資源利用率。它通過預先創建一組線程并維護一個工作隊列,將任務提交給線程池來處理,從而減少線程的創建和銷毀次數,避免了線程頻繁創建和銷毀
    的頭像 發表于 12-04 16:52 ?827次閱讀