• <tbody id="wslfv"><pre id="wslfv"></pre></tbody>
    <span id="wslfv"></span>
    <tbody id="wslfv"><pre id="wslfv"></pre></tbody>
    <th id="wslfv"><track id="wslfv"><rt id="wslfv"></rt></track></th>

    <li id="wslfv"><acronym id="wslfv"></acronym></li>
    更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

    嵌入式C語言中的組成結構是什么

    • 發布:嵌入式培訓
    • 來源:嵌入式教程
    • 時間:2019-11-20 16:57

    嵌入式C語言中的組成結構是什么,嵌入式學習者應該掌握C語言中的組成結構嗎?在介紹結構之后,將看一下這個強大數據對象的一些重要應用。然后將檢查C語言語法以聲明結構。最后將簡要介紹數據對齊要求。可以通過簡單地重新排列其成員的順序來減小結構的大小。可以將在邏輯上彼此相關的同一類型的多個變量分組為數組。使用一個組而不是一組自變量,可以更方便地安排和使用數據。

    請注意,uint16_t是無符號整數類型,寬度恰好為16位。這是在C標準庫stdint.h中定義的,它提供了與系統規范無關的特定位長度的數據類型。數組可用于對多個具有相同數據類型的變量進行分組。如果不同數據類型的變量之間存在連接怎么辦?可以在程序中將這些變量視為一個組嗎?例如,假設需要指定生成上述語音 陣列的ADC的采樣率。

    盡管變量voice和sample_rate彼此相關,但它們被定義為兩個獨立變量。為了將這兩個變量相互關聯,我們可以使用稱為結構的C語言的強大數據結構。結構允許將不同的數據類型進行分組并將它們作為單個數據對象處理。結構可以包括不同種類的變量類型,例如其他結構、指向函數的指針、指向結構的指針等。

    在這種情況下,有一個名為record的結構,它有兩個不同的成員或字段:第一個成員是uint16_t元素的數組,第二個成員是float類型的變量。語法以關鍵字struct開頭。struct關鍵字后面的單詞是一個可選名稱,用于以后引用該結構。將在本文的其余部分討論定義和使用結構的其他細節。

    結構的一個重要應用,即定義了可以將不同類型的單個變量相互關聯的依賴于應用程序的數據對象。這不僅可以實現操作數據的有效方式,還可以實現稱為數據結構的專用結構。數據結構可用于各種應用,例如兩個嵌入式系統之間的消息傳遞以及將從傳感器收集的數據存儲在非連續存儲器位置中。

    另外,當程序需要訪問內存映射微控制器外圍設備的寄存器時,結構是有用的數據對象。這指定了用于創建此類型的未來變量的布局或模板。該模板包含一個uint16_t數組和一個float類型的變量。模板的名稱是record,它位于關鍵字struct之后。值得一提的是,存儲結構模板沒有內存分配。只有在定義了基于此布局的結構變量之后,才會進行內存分配。

    為變量mic1分配了一段內存。它有空間來存儲數組的四個uint16_t元素和一個float變量。可以使用成員運算符(.)訪問結構的成員。例如,以下代碼將100分配給數組的第一個元素,并將sample_rate的值復制到fs變量(必須是float類型)。

    我們在前一節中研究了一種聲明結構的方法。C語言支持本節中將要討論的一些其他格式。你可能會在整個程序中堅持使用一種格式,但熟悉其他格式有時可能會有所幫助。該tag_name和variable_name是可選的標識符。我們通常會看到這兩個標識符中的至少一個,但在某些情況下我們可以消除它們。語法1:當tag_name和variable_name都存在時,我們就在模板之后定義結構變量。

    現在,如果我們需要定義另一個變量(mic2),我們可以編寫struct record mic2;語法2:僅包含variable_name。在這種情況下,我們必須在模板之后定義所有變量,并且我們不能在程序中定義任何其他變量(因為模板沒有名稱,我們以后也不能引用它)。語法3:在這種情況下,沒有tag_name或variable_name。以這種方式定義的結構模板稱為匿名結構。可以在另一個結構或聯合中定義匿名結構。

    要訪問上述匿名結構的成員,我們可以使用成員運算符,由于結構是匿名的,所以我們只使用一次成員運算符來訪問它的成員。在這種情況下,我們應該使用以下代碼將1.2分配給f:test_var.nested.f=1.2;如你所見,匿名結構可以使代碼更具可讀性和更簡潔。也可以使用typedef關鍵字和結構來定義新的數據類型。我們將在以后的文章中介紹這種方法。

    C標準保證結構的成員將按照在結構中聲明成員的順序一個接一個地位于內存中。第一個成員的內存地址將與結構本身的地址相同。了解數據對齊要求后,我們可能能夠重新排列結構中成員的順序,并提高內存使用效率。例如,如果我們重寫上面給出的結構,它的大小將在32位機器上減少到8個字節。對于內存受限的嵌入式系統,將數據對象的大小從12個字節減少到8個字節可以節省大量成本,特別是當程序需要許多這些數據對象時。

    結構允許我們定義依賴于應用程序的數據對象,這些對象可以將不同類型的單個變量相互關聯,這就產生了一種有效的數據處理方法;稱為數據結構的專用結構可用于各種應用,例如兩個嵌入式系統之間的消息傳遞以及將從傳感器收集的數據存儲在非連續存儲器位置中;當我們需要訪問內存映射微控制器外圍設備的寄存器時,結構是有用的;我們可以通過重新排列結構中成員的順序來提高內存使用效率。

    文章來源:電子發燒網,版權聲明:轉載文章來自公開網絡,版權歸作者本人所有,推送文章除非無法確認,我們都會注明作者和來源。如果出處有誤或侵犯到原作者權益,請與我們聯系刪除或授權事宜。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:Python和嵌入式的區別是什么?可以做嵌入式開發嗎?
    下一篇:嵌入式主板常見故障及解決

    裸編程怎么做?裸編程具體做法

    嵌入式編程中你必須知道的小知識

    嵌入式C語言編程小知識總結

    有哪些工具可以讓嵌入式開發事半功倍?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美一级高清片,一级欧美免费大片视频,欧美三级在线电影免费 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>