国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用union來了解內存?

Linux愛好者 ? 來源:嵌入式Linux ? 作者:寫代碼的籃球球癡 ? 2021-06-22 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天一個讀者朋友給我發的一段代碼,這段代碼讓他有了疑惑。

代碼如下:

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

這里說一個問題,我們從printf上看到的不一定我們想看到的,所以我們需要去變量的內存地址一探究竟,一定要了解內存的布局,對內存有所了解。

上面注釋的代碼,在我的電腦中運行的結果不相同,所以要看printf的準確輸出,應該初始化變量a。

使用gdb來查看地址,可以準確看到變量內存中的數據。

什么是大小端?

這個問題在之前的文章說過,這里再重新提一下

大端模式(Big-endian),是指數據的高字節,保存在內存的低地址中,而數據的低字節,保存在內存的高地址中

小端模式(Little-endian),是指數據的高字節保存在內存的高地址中,而數據的低字節保存在內存的低地址中

我們用這個再來看看我們的程序

#include “stdio.h”int main()

{

typedef union{

short i;

char j[2];

}DATA;

DATA a;

//a.j[0] = 10;

a.j[1] = 1;

printf(“%x

”,a.i);

return 0;

}

j[0]在低地址,j[1]在高地址,這個沒有什么意見吧?

內存就是一個尺子,它是不斷變長的,所以這個地址也是慢慢變大的,沒有任何問題吧。

然后,我們可以看看現在的輸出,從上面的輸出可以看到輸出100,也就是j[1]在高地址,j[0]在低地址,那這個計算機就是小端模式。

也可以通過查看內存地址來確認

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    183

    文章

    7644

    瀏覽量

    145592
  • 代碼
    +關注

    關注

    30

    文章

    4968

    瀏覽量

    73965

原文標題:C 語言,使用 union 了解內存

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MangoTree Halo Ultra「全新PXI」,標配自動糾錯內存#

    內存
    芒果樹數字
    發布于 :2026年03月06日 15:59:34

    內存條崩了?漲了十倍的內存顆粒賣給誰?內存芯片接下來怎么玩?

    內存
    芯廣場
    發布于 :2026年01月26日 17:48:21

    內存持續漲價,多重信號預警成本壓力#內存芯片#漲價#行業#消費電子#AI#

    內存芯片
    jf_15747056
    發布于 :2026年01月08日 18:38:35

    rk基于linux/android內存管理

    一、內存分布 ? U-Boot 由前級 Loader 加載到 CONFIG_SYS_TEXT_BASE 地址,初始化時會探明當前系統的總內存容 量, 32 位平臺上認為最大 4GB 可用(但是不影響
    的頭像 發表于 12-15 10:42 ?211次閱讀
    rk基于linux/android<b class='flag-5'>內存</b>管理

    共用體聲明

    共用體也稱聯合體。 和結構體還是有點像: union 共用體名稱 { 成員1; 成員2; 成員3; }; 但是兩者有本質的不同。共用體的每一個成員共用一段內存,那么這也就意味著它們
    發表于 12-05 07:24

    利用C語言union特性來定義RGB565格式

    本次分享的內容是利用C語言union特性來定義RGB565格式 1)前言 在做視覺相關的任務時,相機的輸入一般會是RGB565(uint16_t)的格式,而我們需要把它顯式轉換成RGB三通
    發表于 10-30 08:26

    RTThread支持內存保護功能嗎?

    以前在其他視頻里看過說單片機可以實現線程崩潰不會影響系統運行, 我一直不知道怎么實現的, 最近了解到 MPU和Zephyr的內存保護, 這些在RTthread中可以實現嗎
    發表于 10-14 07:14

    科普:什么AI 內存技術

    AI 內存是一種專為人工智能 (AI) 應用設計的新型內存技術。與傳統的通用內存(如 DDR5 或 LPDDR5)不同,AI 內存的核心目標是解決 AI 計算中遇到的兩大挑戰:帶寬瓶頸
    的頭像 發表于 09-03 15:44 ?1393次閱讀

    性能優于HBM,超高帶寬內存 (X-HBM) 架構來了

    電子發燒友網綜合報道,NEO Semiconductor宣布推出全球首款用于AI芯片的超高帶寬內存 (X-HBM) 架構。該架構旨在滿足生成式AI和高性能計算日益增長的需求,其32Kbit數據總線
    的頭像 發表于 08-16 07:51 ?4911次閱讀
    性能優于HBM,超高帶寬<b class='flag-5'>內存</b> (X-HBM) 架構<b class='flag-5'>來了</b>!

    eFUSE內存是如何組織的?

    目前,我正在研究TRAVEO? 2G - CYT4EN。 我想了解一些與 eFUSE 相關的主題。 1. eFUSE 是控制器訪問的物理芯片還是 SOC 的一部分? 2. eFUSE內存是如何組織
    發表于 07-30 07:07

    【HZ-RK3568開發板免費體驗】--開發板了解與初探

    感謝合眾恒躍與發燒友論壇提供的開發板與平臺,收到實物如下 下面來了解下開發板 開發板由底板和核心板組成,核心板基于瑞芯微RK3568J處理器設計,支持圖像H.264編解碼處理,內置3D GPU可圖像
    發表于 06-28 23:42

    一文了解電壓諧波

    我們經常會聽到諧波,到底什么是諧波,怎么定義的?為什么要關注諧波?什么時候關注諧波?諧波如何計算或標準規定的諧波的算法是怎樣的?GB關于電壓諧波又是如何評估的?帶著諸多的問題,我們一起來了解
    的頭像 發表于 06-28 17:23 ?4721次閱讀
    一文<b class='flag-5'>了解</b>電壓諧波

    C語言中結構體與聯合體的深度解析:內存布局與應用場景

    4字節對齊) 成員訪問:通過.運算符獨立操作 生命周期:所有成員同時存在 1.2 聯合體(Union)的奧秘 聯合體通過內存共享機制實現數據復用,其內存大小由最大成員決定: union
    發表于 04-08 09:18

    golang內存分配

    作者:錢文 Go 的分配采用了類似 tcmalloc 的結構.特點: 使用一小塊一小塊的連續內存頁, 進行分配某個范圍大小的內存需求. 比如某個連續 8KB 專門用于分配 17-24 字節,以此減少
    的頭像 發表于 03-31 15:00 ?514次閱讀
    golang<b class='flag-5'>內存</b>分配

    HBM新技術,橫空出世:引領內存芯片創新的新篇章

    在這樣的背景下,高帶寬存儲器(HBM)技術應運而生,以其獨特的3D堆疊架構和TSV(硅通孔)技術,為內存芯片行業帶來了前所未有的創新。
    的頭像 發表于 03-22 10:14 ?4899次閱讀
    HBM新技術,橫空出世:引領<b class='flag-5'>內存</b>芯片創新的新篇章