資料介紹
當我們寫代碼的時候,會用到很多變量,如果隨意的定義變量,比如寫了 N 多個“unsigned char/int X;”那么代碼可能會顯的很亂,自己拐回頭看的時候都暈掉了,這個時候我們可以構造一個復雜的數據類型-結構體類型,對代碼中出現的變量進行類別的劃分,用構造的結構體類型定義結構體變量,在寫 or 看代碼的時候,只要看到這個結構體
就能大致的知道其實現功能,這樣看起來就神清氣爽了,可讀性大大提高我們定義的結構體變量,如果沒有特殊規定的話是存儲在 RAM 中的,單片機的 RAM 資源是有限的,那這個結構體變量在 RAM 中占的空間大小就是我們需要關注一個問題了,它真的像你想的那么“單純”嗎?接下來我們一起來看看吧!
在看下面的圖之前,我們說一個前提,在STM32單片機這個32位系統中,signed/unsigned int 占 4 個字節,signed/unsigned short int 占 2 個字節 signed/unsigned char 占 1 個字節,我們稱這些為基本數據類型。Size = Sizeof(Test);這個函數是求取這個結構體變量 Test 所占內存的大小,并返回給 Size。

請看上圖,我們使用基本數據類型構造了 3 個復雜的結構體數據類型,仔細看會發現這 3 個數據類型的成員可是不大一樣的,我們來看第一個 Test,這個數據類型總共占 4+4=8 個字節
這個很好理解,那第二個 Test1,占空間大小按道理來說應該是 1+4 = 5 個字節
但 是為什么還是 8 呢,第三個 Test2,占空間大小應該是 1+1+4=8,為什么還是 8 呢?
這個里面就涉及到了結構體對齊,所有的成員在分配內存時都要與所有成員中占內存最
多的基本數據類型所占內存空間的字節數對齊。假如這個字節數為 N,那么對齊的原則是:
理論上所有成員在分配內存時都是緊接在前一個變量后面依次填充的,但是如果是“以 N 對齊”為原則
如果一行中剩下的空間不足以填充某成員變量時,即剩下的空間小于 某成員變量的
數據類型所占的字節數,該成員變量在分配內存時另起一行分配。如圖 3,4:

完整版技術文檔請點擊文章開頭普通下載
- 單片機串口不夠用怎么辦?
- stm32出現ram、rom不夠用,調試方法
- 51單片機外部中斷拓展(兩個以上的外部中斷)
- 51單片機small、compact、large模式區別以及遇到的問題
- 單片機IO口擴展方法
- 單片機基礎及應用:單片機并行存儲器擴展資料下載
- 淺析單片機ROM、RAM和FLASH的作用資料下載
- 單片機內部擴展RAM有什么作用?有哪些模式三種模式詳細說明
- 進行51單片機存儲器擴展的詳細資料說明
- 單片機外部RAM進行數據傳送的程序免費下載
- 使用51單片機模擬串口的代碼免費下載
- 如何使用單片機擴展IO口的詳細資料說明
- 51單片機的時間戳相關函數程序免費下載
- 單片機電路接口巧設計 6次下載
- pic單片機與pc機異步串行通信的設計
- 怎么解決MCU RAM空間不夠用的問題? 1833次閱讀
- 局域網IP地址不夠用怎么解決 1855次閱讀
- 兩個單片機之間串口通信的例程 8815次閱讀
- 單片機的最小系統及基本原理 1.6w次閱讀
- 局域網ip地址不夠用的解決辦法 3717次閱讀
- 單片機小知識總結 3478次閱讀
- 如何對STC單片機進行免掉電下載 2296次閱讀
- 如何對51單片機RAM不同的區域進行劃分 2503次閱讀
- 什么是單片機堆棧?單片機堆棧有什么作用和原理說明 2w次閱讀
- RAM在單片機里有什么樣的作用 6513次閱讀
- 如何正確的劃分51單片機中的RAM 8077次閱讀
- 單片機學習很難而且總是入坑?看看這些經驗會對你有幫助 3707次閱讀
- CAN口不夠用了怎么辦? 9168次閱讀
- 單片機ROM,RAM和FLASH的作用 1w次閱讀
- ch340g單片機下載程序電路原理 7.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論